
L1: 8b ff ?? mov edi, edi
 55 ?? push ebp
 8b ec ?? mov ebp, esp
 56 ?? push esi
 8b 75 0c ?? mov esi, dword ss:[ebp + 12]
 f6 46 0c 40 ?? test byte ds:[esi + 12], 0x40<64>
 57 ?? push edi
 75 79 ?? jne basic block L16

L2: 56 ?? push esi
 e8 c6 80 00 00 ?? call function 0x0040f4c0

L3: 59 ?? pop ecx
 ba c0 59 43 00 ?? mov edx, 0x004359c0
 83 f8 ff ?? cmp eax, 0xff<255,-1>
 74 1b ?? je basic block L6

L4: 83 f8 fe ?? cmp eax, 0xfe<254,-2>
 74 16 ?? je basic block L6

L5: 8b c8 ?? mov ecx, eax
 83 e1 1f ?? and ecx, 0x1f<31>
 8b f8 ?? mov edi, eax
 c1 ff 05 ?? sar edi, 5
 c1 e1 06 ?? shl ecx, 6
 03 0c bd e0 76 43 00 ?? add ecx, dword ds:[0x004376e0 + edi * 4]
 eb 02 ?? jmp basic block L7

L6: 8b ca ?? mov ecx, edx

L7: f6 41 24 7f ?? test byte ds:[ecx + 0x24<36>], 0x7f<127>
 75 26 ?? jne basic block L13

L8: 83 f8 ff ?? cmp eax, 0xff<255,-1>
 74 19 ?? je basic block L11

L9: 83 f8 fe ?? cmp eax, 0xfe<254,-2>
 74 14 ?? je basic block L11

L10: 8b c8 ?? mov ecx, eax
 83 e0 1f ?? and eax, 0x1f<31>
 c1 f9 05 ?? sar ecx, 5
 c1 e0 06 ?? shl eax, 6
 03 04 8d e0 76 43 00 ?? add eax, dword ds:[0x004376e0 + ecx * 4]
 eb 02 ?? jmp basic block L12

L11: 8b c2 ?? mov eax, edx

L12: f6 40 24 80 ?? test byte ds:[eax + 0x24<36>], 0x80<128,-128>
 74 1f ?? je basic block L16

L13: e8 cf 54 00 00 ?? call function 0x0040c922

L14: 33 ff ?? xor edi, edi
 57 ?? push edi
 57 ?? push edi
 57 ?? push edi
 57 ?? push edi
 57 ?? push edi
 c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
 e8 5b f9 ff ff ?? call function 0x00406dc0

L15: 83 c4 14 ?? add esp, 0x14<20>
 83 c8 ff ?? or eax, 0xff<255,-1>
 eb 4a ?? jmp basic block L31

L16: 53 ?? push ebx
 8b 5d 08 ?? mov ebx, dword ss:[ebp + 8]
 83 fb ff ?? cmp ebx, 0xff<255,-1>
 74 3d ?? je basic block L29

L17: 8b 46 0c ?? mov eax, dword ds:[esi + 12]
 a8 01 ?? test al, 1
 75 08 ?? jne basic block L20

L18: 84 c0 ?? test al, al
 79 32 ?? jns basic block L29

L19: a8 02 ?? test al, 2
 75 2e ?? jne basic block L29

L20: 33 ff ?? xor edi, edi
 39 7e 08 ?? cmp dword ds:[esi + 8], edi
 75 07 ?? jne basic block L23

L21: 56 ?? push esi
 e8 c4 81 00 00 ?? call function 0x0040f656

L22: 59 ?? pop ecx

L23: 8b 06 ?? mov eax, dword ds:[esi]
 3b 46 08 ?? cmp eax, dword ds:[esi + 8]
 75 08 ?? jne basic block L26

L24: 39 7e 04 ?? cmp dword ds:[esi + 4], edi
 75 14 ?? jne basic block L29

L25: 40 ?? inc eax
 89 06 ?? mov dword ds:[esi], eax

L26: ff 0e ?? dec dword ds:[esi]
 f6 46 0c 40 ?? test byte ds:[esi + 12], 0x40<64>
 8b 06 ?? mov eax, dword ds:[esi]
 74 0f ?? je basic block L32

L27: 38 18 ?? cmp byte ds:[eax], bl
 74 0d ?? je basic block L33

L28: 40 ?? inc eax
 89 06 ?? mov dword ds:[esi], eax

L29: 83 c8 ff ?? or eax, 0xff<255,-1>

L30: 5b ?? pop ebx

L31: 5f ?? pop edi
 5e ?? pop esi
 5d ?? pop ebp
 c3 ?? ret

L32: 88 18 ?? mov byte ds:[eax], bl

L33: 8b 46 0c ?? mov eax, dword ds:[esi + 12]
 ff 46 04 ?? inc dword ds:[esi + 4]
 83 e0 ef ?? and eax, 0xef<239,-17>
 83 c8 01 ?? or eax, 1
 89 46 0c ?? mov dword ds:[esi + 12], eax
 8b c3 ?? mov eax, ebx
 25 ff 00 00 00 ?? and eax, 0x000000ff<255>
 eb e1 ?? jmp basic block L30

