Function at 0x409f78
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x228
mov dword [esp + 0xc], ebx
mov ebx, eax
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], edi
movsx ecx, byte [eax + 4]
xor cl, 1
je 0x40b9b5
mov eax, dword [ebx]
cmp eax, 0x28
je 0x409fb7
cmp eax, 0x29
je 0x40b72b
cmp eax, 0x7c
je 0x40b888
jmp 0x40b996
cmp dword [ebx + 8], 0
jne 0x409fc3
mov byte [ebx + 4], 1
jmp 0x40a017
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x1f8], ecx
cmp byte [esi + ecx], 0x80
jae 0x409ffa
mov eax, dword [esp + 0x1f8]
inc eax
mov dword [esp + 0x1f8], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40a00d
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x1fc]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40a0b5
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40a0b5
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40a0b5
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40a04c
mov byte [ebx + 4], 1
jmp 0x40a09f
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1f0], ecx
cmp byte [edx + ecx], 0x80
jae 0x40a083
mov ecx, dword [esp + 0x1f0]
inc ecx
mov dword [esp + 0x1f0], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40a096
lea ecx, [esp + 0x2c]
push ecx
lea eax, [esp + 0x1f4]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40a0b5
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40a041
cmp dword [ebx], 0x3f
jne 0x40b71e
cmp dword [ebx + 8], 0
jne 0x40a0ca
mov byte [ebx + 4], 1
jmp 0x40a11e
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x40], edx
mov esi, dword [esp + 0x40]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1e8], ecx
cmp byte [esi + ecx], 0x80
jae 0x40a101
mov eax, dword [esp + 0x1e8]
inc eax
mov dword [esp + 0x1e8], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40a114
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x1ec]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40a1bc
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40a1bc
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40a1bc
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40a153
mov byte [ebx + 4], 1
jmp 0x40a1a6
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x1e0], ecx
cmp byte [edx + ecx], 0x80
jae 0x40a18a
mov ecx, dword [esp + 0x1e0]
inc ecx
mov dword [esp + 0x1e0], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40a19d
lea ecx, [esp + 0x4c]
push ecx
lea eax, [esp + 0x1e4]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40a1bc
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40a148
mov esi, dword [ebx]
cmp esi, 0x3c
je 0x40afaf
ja 0x40a1e5
cmp esi, 0x21
je 0x40a70e
cmp esi, 0x23
je 0x40a1fc
cmp esi, 0x3a
je 0x40a45f
jmp 0x40b2be
cmp esi, 0x3d
je 0x40a5da
cmp esi, 0x50
je 0x40a842
jmp 0x40b2be
lea esi, [ebx + 8]
mov dword [esp + 0x218], esi
mov ecx, dword [esp + 0x218]
cmp dword [ecx], 0
jne 0x40a218
mov byte [ebx + 4], 1
jmp 0x40a270
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor edi, edi
mov dword [esp + 0x68], edx
mov esi, dword [esp + 0x68]
mov dword [esp + 0x64], eax
mov dword [esp + 0x1cc], edi
cmp byte [esi + edi], 0x80
jae 0x40a24f
mov eax, dword [esp + 0x1cc]
inc eax
mov dword [esp + 0x1cc], eax
dec eax
movzx ecx, byte [esi + eax]
jmp 0x40a262
lea edx, [esp + 0x64]
push edx
lea eax, [esp + 0x1d0]
call fcn.00409328
mov ecx, eax
mov eax, dword [esp + 0x218]
mov dword [ebx], ecx
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40a30e
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40a30e
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40a30e
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40a2a5
mov byte [ebx + 4], 1
jmp 0x40a2f8
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x78]
mov dword [esp + 0x74], eax
mov dword [esp + 0x1c4], ecx
cmp byte [edx + ecx], 0x80
jae 0x40a2dc
mov ecx, dword [esp + 0x1c4]
inc ecx
mov dword [esp + 0x1c4], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40a2ef
lea ecx, [esp + 0x74]
push ecx
lea eax, [esp + 0x1c8]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40a30e
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40a29a
movsx ecx, byte [ebx + 4]
xor cl, 1
mov esi, 0x40ba34
mov edi, 0x4cbec0
mov eax, 0x28b
push ecx
push esi
push ebx
push edi
push 0x46
call fcn.00462cc8
cmp dword [ebx], 0x29
jne 0x40a206
cmp dword [ebx + 8], 0
jne 0x40a344
mov byte [ebx + 4], 1
jmp 0x40a3a4
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x88], edx
mov esi, dword [esp + 0x88]
mov dword [esp + 0x84], eax
mov dword [esp + 0x1bc], ecx
cmp byte [esi + ecx], 0x80
jae 0x40a384
mov eax, dword [esp + 0x1bc]
inc eax
mov dword [esp + 0x1bc], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40a39a
lea edx, [esp + 0x84]
push edx
lea eax, [esp + 0x1c0]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b9a8
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b9a8
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40a3dd
mov byte [ebx + 4], 1
jmp 0x40a43c
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x98], edx
mov edx, dword [esp + 0x98]
mov dword [esp + 0x94], eax
mov dword [esp + 0x1b4], ecx
cmp byte [edx + ecx], 0x80
jae 0x40a41d
mov ecx, dword [esp + 0x1b4]
inc ecx
mov dword [esp + 0x1b4], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40a433
lea ecx, [esp + 0x94]
push ecx
lea eax, [esp + 0x1b8]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40a3d2
jmp 0x40b9a8
lea esi, [ebx + 0x1c]
mov edi, dword [esi]
lea ecx, [esi + 8]
inc dword [esi + 0x20]
mov dword [esp + 8], 1
mov dword [esp + 4], ecx
mov dword [esp], 0x4d6f90
call fcn.00465444
mov dword [esp + 0x164], eax
mov eax, esi
mov dword [esp + 0x168], edx
mov edx, dword [esp + 0x164]
mov ecx, dword [esp + 0x168]
lea edx, [ecx + edx*4]
mov dword [edx - 4], edi
push 0x94000000
call fcn.0046b420
cmp dword [ebx + 8], 0
jne 0x40a4bf
mov byte [ebx + 4], 1
jmp 0x40a51f
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor esi, esi
mov dword [esp + 0xb0], edx
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0xac], eax
mov dword [esp + 0x19c], esi
cmp byte [ecx + esi], 0x80
jae 0x40a4ff
mov eax, dword [esp + 0x19c]
inc eax
mov dword [esp + 0x19c], eax
dec eax
movzx edi, byte [ecx + eax]
jmp 0x40a515
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0x1a0]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b9a8
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b9a8
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40a558
mov byte [ebx + 4], 1
jmp 0x40a5b7
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xc0], edx
mov edx, dword [esp + 0xc0]
mov dword [esp + 0xbc], eax
mov dword [esp + 0x194], ecx
cmp byte [edx + ecx], 0x80
jae 0x40a598
mov ecx, dword [esp + 0x194]
inc ecx
mov dword [esp + 0x194], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40a5ae
lea ecx, [esp + 0xbc]
push ecx
lea eax, [esp + 0x198]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40a54d
jmp 0x40b9a8
push 0x99
lea eax, [ebx + 0x1c]
call fcn.0046bafc
cmp dword [ebx + 8], 0
jne 0x40a5f3
mov byte [ebx + 4], 1
jmp 0x40a653
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xd0], edx
mov esi, dword [esp + 0xd0]
mov dword [esp + 0xcc], eax
mov dword [esp + 0x18c], ecx
cmp byte [esi + ecx], 0x80
jae 0x40a633
mov eax, dword [esp + 0x18c]
inc eax
mov dword [esp + 0x18c], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40a649
lea edx, [esp + 0xcc]
push edx
lea eax, [esp + 0x190]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b9a8
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b9a8
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40a68c
mov byte [ebx + 4], 1
jmp 0x40a6eb
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xe0], edx
mov edx, dword [esp + 0xe0]
mov dword [esp + 0xdc], eax
mov dword [esp + 0x184], ecx
cmp byte [edx + ecx], 0x80
jae 0x40a6cc
mov ecx, dword [esp + 0x184]
inc ecx
mov dword [esp + 0x184], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40a6e2
lea ecx, [esp + 0xdc]
push ecx
lea eax, [esp + 0x188]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40a681
jmp 0x40b9a8
push 0x9d
lea eax, [ebx + 0x1c]
call fcn.0046bafc
cmp dword [ebx + 8], 0
jne 0x40a727
mov byte [ebx + 4], 1
jmp 0x40a787
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xf0], edx
mov esi, dword [esp + 0xf0]
mov dword [esp + 0xec], eax
mov dword [esp + 0x17c], ecx
cmp byte [esi + ecx], 0x80
jae 0x40a767
mov eax, dword [esp + 0x17c]
inc eax
mov dword [esp + 0x17c], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40a77d
lea edx, [esp + 0xec]
push edx
lea eax, [esp + 0x180]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b9a8
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b9a8
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40a7c0
mov byte [ebx + 4], 1
jmp 0x40a81f
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x100], edx
mov edx, dword [esp + 0x100]
mov dword [esp + 0xfc], eax
mov dword [esp + 0x170], ecx
cmp byte [edx + ecx], 0x80
jae 0x40a800
mov ecx, dword [esp + 0x170]
inc ecx
mov dword [esp + 0x170], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40a816
lea ecx, [esp + 0xfc]
push ecx
lea eax, [esp + 0x174]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40a7b5
jmp 0x40b9a8
cmp dword [ebx + 8], 0
jne 0x40a84e
mov byte [ebx + 4], 1
jmp 0x40a8ae
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x110], edx
mov esi, dword [esp + 0x110]
mov dword [esp + 0x10c], eax
mov dword [esp + 0x1a4], ecx
cmp byte [esi + ecx], 0x80
jae 0x40a88e
mov eax, dword [esp + 0x1a4]
inc eax
mov dword [esp + 0x1a4], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40a8a4
lea edx, [esp + 0x10c]
push edx
lea eax, [esp + 0x1a8]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40a960
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40a960
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40a960
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40a8e7
mov byte [ebx + 4], 1
jmp 0x40a946
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x120], edx
mov edx, dword [esp + 0x120]
mov dword [esp + 0x11c], eax
mov dword [esp + 0x198], ecx
cmp byte [edx + ecx], 0x80
jae 0x40a927
mov ecx, dword [esp + 0x198]
inc ecx
mov dword [esp + 0x198], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40a93d
lea ecx, [esp + 0x11c]
push ecx
lea eax, [esp + 0x19c]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40a960
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40a8dc
cmp dword [ebx], 0x3c
sete cl
mov esi, 0x40ba40
push ecx
mov edi, 0x4cbec0
mov eax, 0x2a1
push esi
push ebx
push edi
push 0x46
call fcn.00462cc8
mov dword [esp + 0x12c], 0
mov dword [esp + 0x130], 0
cmp dword [ebx + 8], 0
jne 0x40a9a2
mov byte [ebx + 4], 1
jmp 0x40aa02
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x138], edx
mov esi, dword [esp + 0x138]
mov dword [esp + 0x134], eax
mov dword [esp + 0x1ac], ecx
cmp byte [esi + ecx], 0x80
jae 0x40a9e2
mov eax, dword [esp + 0x1ac]
inc eax
mov dword [esp + 0x1ac], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40a9f8
lea edx, [esp + 0x134]
push edx
lea eax, [esp + 0x1b0]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40aab4
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40aab4
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40aab4
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40aa3b
mov byte [ebx + 4], 1
jmp 0x40aa9a
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x140], edx
mov edx, dword [esp + 0x140]
mov dword [esp + 0x13c], eax
mov dword [esp + 0x1d0], ecx
cmp byte [edx + ecx], 0x80
jae 0x40aa7b
mov ecx, dword [esp + 0x1d0]
inc ecx
mov dword [esp + 0x1d0], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40aa91
lea ecx, [esp + 0x13c]
push ecx
lea eax, [esp + 0x1d4]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40aab4
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40aa30
cmp byte [ebx + 4], 0
jne 0x40aade
mov eax, dword [ebx]
call fcn.0046cb20
test al, al
jne 0x40aad0
mov ecx, dword [ebx]
cmp ecx, 0x5f
je 0x40aad0
xor edx, edx
jmp 0x40aad5
mov edx, 1
xor dl, 1
je 0x40ab78
mov dword [esp + 0x158], 0x4cbf60
xor ecx, ecx
mov dword [esp + 0x154], 0x25
mov dword [esp + 0x200], ecx
push ecx
push ecx
lea eax, [esp + 0x208]
call fcn.00408f24
lea edx, [esp + 0x200]
push edx
mov ecx, 0x4cbf30
push ecx
mov ecx, dword [ebx + 0x10]
push 0x2a
push dword [esp + 0x164]
push dword [esp + 0x164]
push dword [ebx + 0x14]
sub ecx, dword [ebx + 8]
push ecx
push dword [ebx + 0xc]
push dword [ebx + 8]
call fcn.0040f29c
mov dword [esp], 0x4d9770
call fcn.00462d20
mov esi, eax
lea eax, [esp + 0x200]
call fcn.00408fbc
push edx
mov edx, 0x4cbec0
push eax
mov eax, esi
push edx
push 0x46
push 0x3fa
push 0
call fcn.0046b344
mov dword [esp], eax
call fcn.00463074
mov esi, dword [ebx]
lea edi, [esp + 0x12c]
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.0046c980
cmp dword [ebx + 8], 0
jne 0x40ab99
mov byte [ebx + 4], 1
jmp 0x40abf9
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x118], edx
mov esi, dword [esp + 0x118]
mov dword [esp + 0x114], eax
mov dword [esp + 0x16c], ecx
cmp byte [esi + ecx], 0x80
jae 0x40abd9
mov eax, dword [esp + 0x16c]
inc eax
mov dword [esp + 0x16c], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40abef
lea edx, [esp + 0x114]
push edx
lea eax, [esp + 0x170]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40acab
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40acab
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40acab
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40ac32
mov byte [ebx + 4], 1
jmp 0x40ac91
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x108], edx
mov edx, dword [esp + 0x108]
mov dword [esp + 0x104], eax
mov dword [esp + 0x174], ecx
cmp byte [edx + ecx], 0x80
jae 0x40ac72
mov ecx, dword [esp + 0x174]
inc ecx
mov dword [esp + 0x174], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40ac88
lea ecx, [esp + 0x104]
push ecx
lea eax, [esp + 0x178]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40acab
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40ac27
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40ae56
mov eax, dword [ebx]
call fcn.0046cb20
test al, al
jne 0x40acd8
mov edx, dword [ebx]
cmp edx, 0x5f
je 0x40acd8
lea ecx, [edx - 0x30]
mov esi, edx
cmp ecx, 9
ja 0x40ae56
lea esi, [ebx + 8]
mov dword [esp + 0x214], esi
mov edi, dword [ebx]
lea eax, [esp + 0x12c]
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.0046c980
mov edx, dword [esp + 0x214]
cmp dword [edx], 0
jne 0x40ad09
mov byte [ebx + 4], 1
jmp 0x40ad6d
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xf8], edx
mov esi, dword [esp + 0xf8]
mov dword [esp + 0xf4], eax
mov dword [esp + 0x180], ecx
cmp byte [esi + ecx], 0x80
jae 0x40ad49
mov eax, dword [esp + 0x180]
inc eax
mov dword [esp + 0x180], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40ad5f
lea edx, [esp + 0xf4]
push edx
lea eax, [esp + 0x184]
call fcn.00409328
mov edi, eax
mov eax, dword [esp + 0x214]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40ad8c
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40ad8c
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40adc6
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40ae56
mov eax, dword [ebx]
call fcn.0046cb20
test al, al
jne 0x40ace2
mov edx, dword [ebx]
cmp edx, 0x5f
je 0x40ace2
lea ecx, [edx - 0x30]
mov esi, edx
cmp ecx, 9
jbe 0x40ace2
jmp 0x40ae56
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40add4
mov byte [ebx + 4], 1
jmp 0x40ae33
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xe8], edx
mov edx, dword [esp + 0xe8]
mov dword [esp + 0xe4], eax
mov dword [esp + 0x188], ecx
cmp byte [edx + ecx], 0x80
jae 0x40ae14
mov ecx, dword [esp + 0x188]
inc ecx
mov dword [esp + 0x188], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40ae2a
lea ecx, [esp + 0xe4]
push ecx
lea eax, [esp + 0x18c]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40ad8c
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40adc9
jmp 0x40ad8c
cmp dword [ebx], 0x3e
sete al
mov esi, 0x40ba4c
push eax
mov edi, 0x4cbec0
mov eax, 0x2ae
push esi
push ebx
push edi
push 0x46
call fcn.00462cc8
cmp dword [ebx + 8], 0
jne 0x40ae82
mov byte [ebx + 4], 1
jmp 0x40aee2
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xd8], edx
mov esi, dword [esp + 0xd8]
mov dword [esp + 0xd4], eax
mov dword [esp + 0x190], ecx
cmp byte [esi + ecx], 0x80
jae 0x40aec2
mov eax, dword [esp + 0x190]
inc eax
mov dword [esp + 0x190], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40aed8
lea edx, [esp + 0xd4]
push edx
lea eax, [esp + 0x194]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40af94
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40af94
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40af94
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40af1b
mov byte [ebx + 4], 1
jmp 0x40af7a
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xc8], edx
mov edx, dword [esp + 0xc8]
mov dword [esp + 0xc4], eax
mov dword [esp + 0x1d8], ecx
cmp byte [edx + ecx], 0x80
jae 0x40af5b
mov ecx, dword [esp + 0x1d8]
inc ecx
mov dword [esp + 0x1d8], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40af71
lea ecx, [esp + 0xc4]
push ecx
lea eax, [esp + 0x1dc]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40af94
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40af10
push dword [esp + 0x130]
lea eax, [ebx + 0x1c]
push dword [esp + 0x130]
call fcn.0046ba08
jmp 0x40b9a8
cmp dword [ebx + 8], 0
jne 0x40afbb
mov byte [ebx + 4], 1
jmp 0x40b01b
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xb8], edx
mov edi, dword [esp + 0xb8]
mov dword [esp + 0xb4], eax
mov dword [esp + 0x1a0], ecx
cmp byte [edi + ecx], 0x80
jae 0x40affb
mov eax, dword [esp + 0x1a0]
inc eax
mov dword [esp + 0x1a0], eax
dec eax
movzx esi, byte [edi + eax]
jmp 0x40b011
lea edx, [esp + 0xb4]
push edx
lea eax, [esp + 0x1a4]
call fcn.00409328
mov esi, eax
lea eax, [ebx + 8]
mov dword [ebx], esi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b0cd
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b0cd
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b0cd
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40b054
mov byte [ebx + 4], 1
jmp 0x40b0b3
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xa8], edx
mov edx, dword [esp + 0xa8]
mov dword [esp + 0xa4], eax
mov dword [esp + 0x1a8], ecx
cmp byte [edx + ecx], 0x80
jae 0x40b094
mov ecx, dword [esp + 0x1a8]
inc ecx
mov dword [esp + 0x1a8], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40b0aa
lea ecx, [esp + 0xa4]
push ecx
lea eax, [esp + 0x1ac]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b0cd
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40b049
mov esi, dword [ebx]
cmp esi, 0x3d
jne 0x40b0e6
push 0xa1
lea eax, [ebx + 0x1c]
call fcn.0046bafc
jmp 0x40b197
cmp esi, 0x21
jne 0x40b0fd
push 0xa5
lea eax, [ebx + 0x1c]
call fcn.0046bafc
jmp 0x40b197
mov dword [esp + 0x148], 0x4cbf90
xor ecx, ecx
mov dword [esp + 0x144], 0x1d
mov dword [esp + 0x1b0], ecx
push ecx
push ecx
lea eax, [esp + 0x1b8]
call fcn.00408f24
lea edx, [esp + 0x1b0]
push edx
mov ecx, 0x4cbf30
push ecx
mov ecx, dword [ebx + 0x10]
push 0x2a
push dword [esp + 0x154]
push dword [esp + 0x154]
push dword [ebx + 0x14]
sub ecx, dword [ebx + 8]
push ecx
push dword [ebx + 0xc]
push dword [ebx + 8]
call fcn.0040f29c
mov dword [esp], 0x4d9770
call fcn.00462d20
mov esi, eax
lea eax, [esp + 0x1b0]
call fcn.00408fbc
push edx
mov edx, 0x4cbec0
push eax
mov eax, esi
push edx
push 0x46
push 0x3fa
push 0
call fcn.0046b344
mov dword [esp], eax
call fcn.00463074
cmp dword [ebx + 8], 0
jne 0x40b1a3
mov byte [ebx + 4], 1
jmp 0x40b203
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0xa0], edx
mov esi, dword [esp + 0xa0]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x1b8], ecx
cmp byte [esi + ecx], 0x80
jae 0x40b1e3
mov eax, dword [esp + 0x1b8]
inc eax
mov dword [esp + 0x1b8], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40b1f9
lea edx, [esp + 0x9c]
push edx
lea eax, [esp + 0x1bc]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b9a8
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b9a8
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40b23c
mov byte [ebx + 4], 1
jmp 0x40b29b
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x90]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x1c0], ecx
cmp byte [edx + ecx], 0x80
jae 0x40b27c
mov ecx, dword [esp + 0x1c0]
inc ecx
mov dword [esp + 0x1c0], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40b292
lea ecx, [esp + 0x8c]
push ecx
lea eax, [esp + 0x1c4]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b9a8
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40b231
jmp 0x40b9a8
mov byte [esp + 0x224], 1
xor esi, esi
mov dword [esp + 0x21c], esi
mov dword [esp + 0x220], esi
mov ecx, dword [ebx]
cmp ecx, 0x6d
je 0x40b383
ja 0x40b2f6
cmp ecx, 0x2d
je 0x40b3ad
cmp ecx, 0x69
je 0x40b359
jmp 0x40b464
cmp ecx, 0x73
je 0x40b305
cmp ecx, 0x78
je 0x40b32f
jmp 0x40b464
cmp byte [esp + 0x224], 0
je 0x40b31f
or dword [esp + 0x21c], 0x20
jmp 0x40b4fe
or dword [esp + 0x220], 0x20
jmp 0x40b4fe
cmp byte [esp + 0x224], 0
je 0x40b349
or dword [esp + 0x21c], 4
jmp 0x40b4fe
or dword [esp + 0x220], 4
jmp 0x40b4fe
cmp byte [esp + 0x224], 0
je 0x40b373
or dword [esp + 0x21c], 2
jmp 0x40b4fe
or dword [esp + 0x220], 2
jmp 0x40b4fe
cmp byte [esp + 0x224], 0
je 0x40b39d
or dword [esp + 0x21c], 0x10
jmp 0x40b4fe
or dword [esp + 0x220], 0x10
jmp 0x40b4fe
mov dl, byte [esp + 0x224]
xor dl, 1
je 0x40b457
mov dword [esp + 0x150], 0x4cbfb0
xor ecx, ecx
mov dword [esp + 0x14c], 0x1f
mov dword [esp + 0x1d4], ecx
push ecx
push ecx
lea eax, [esp + 0x1dc]
call fcn.00408f24
lea edx, [esp + 0x1d4]
push edx
mov ecx, 0x4cbf30
push ecx
mov ecx, dword [ebx + 0x10]
push 0x2a
push dword [esp + 0x15c]
push dword [esp + 0x15c]
push dword [ebx + 0x14]
sub ecx, dword [ebx + 8]
push ecx
push dword [ebx + 0xc]
push dword [ebx + 8]
call fcn.0040f29c
mov dword [esp], 0x4d9770
call fcn.00462d20
mov esi, eax
lea eax, [esp + 0x1d4]
call fcn.00408fbc
push edx
mov edx, 0x4cbec0
push eax
mov eax, esi
push edx
push 0x46
push 0x3fa
push 0
call fcn.0046b344
mov dword [esp], eax
call fcn.00463074
mov byte [esp + 0x224], 0
jmp 0x40b4fe
mov dword [esp + 0x160], 0x4cbfd0
xor edx, edx
mov dword [esp + 0x15c], 0x2f
mov dword [esp + 0x1dc], edx
push edx
push edx
lea eax, [esp + 0x1e4]
call fcn.00408f24
lea ecx, [esp + 0x1dc]
push ecx
mov edx, 0x4cbf30
push edx
mov edx, dword [ebx + 0x10]
push 0x2a
push dword [esp + 0x16c]
push dword [esp + 0x16c]
push dword [ebx + 0x14]
sub edx, dword [ebx + 8]
push edx
push dword [ebx + 0xc]
push dword [ebx + 8]
call fcn.0040f29c
mov dword [esp], 0x4d9770
call fcn.00462d20
mov esi, eax
lea eax, [esp + 0x1dc]
call fcn.00408fbc
mov ecx, 0x4cbec0
push edx
push eax
mov eax, esi
push ecx
push 0x46
push 0x3fa
push 0
call fcn.0046b344
mov dword [esp], eax
call fcn.00463074
cmp dword [ebx + 8], 0
jne 0x40b50a
mov byte [ebx + 4], 1
jmp 0x40b55e
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x58], edx
mov esi, dword [esp + 0x58]
mov dword [esp + 0x54], eax
mov dword [esp + 0x1e4], ecx
cmp byte [esi + ecx], 0x80
jae 0x40b541
mov eax, dword [esp + 0x1e4]
inc eax
mov dword [esp + 0x1e4], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40b554
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x1e8]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b5fc
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b5fc
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b5fc
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40b593
mov byte [ebx + 4], 1
jmp 0x40b5e6
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x44], eax
mov dword [esp + 0x1ec], ecx
cmp byte [edx + ecx], 0x80
jae 0x40b5ca
mov ecx, dword [esp + 0x1ec]
inc ecx
mov dword [esp + 0x1ec], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40b5dd
lea ecx, [esp + 0x44]
push ecx
lea eax, [esp + 0x1f0]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b5fc
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40b588
cmp dword [ebx], 0x29
jne 0x40b2d6
cmp dword [ebx + 8], 0
jne 0x40b611
mov byte [ebx + 4], 1
jmp 0x40b665
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x38], edx
mov esi, dword [esp + 0x38]
mov dword [esp + 0x34], eax
mov dword [esp + 0x1f4], ecx
cmp byte [esi + ecx], 0x80
jae 0x40b648
mov eax, dword [esp + 0x1f4]
inc eax
mov dword [esp + 0x1f4], eax
dec eax
movzx edi, byte [esi + eax]
jmp 0x40b65b
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x1f8]
call fcn.00409328
mov edi, eax
lea eax, [ebx + 8]
mov dword [ebx], edi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b703
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b703
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b703
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40b69a
mov byte [ebx + 4], 1
jmp 0x40b6ed
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x24], eax
mov dword [esp + 0x1fc], ecx
cmp byte [edx + ecx], 0x80
jae 0x40b6d1
mov ecx, dword [esp + 0x1fc]
inc ecx
mov dword [esp + 0x1fc], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40b6e4
lea ecx, [esp + 0x24]
push ecx
lea eax, [esp + 0x200]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b703
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40b68f
mov esi, dword [esp + 0x21c]
mov ecx, dword [esp + 0x220]
not ecx
or dword [ebx + 0x18], esi
and dword [ebx + 0x18], ecx
jmp 0x40b9a8
lea eax, [ebx + 0x1c]
call fcn.0046b968
jmp 0x40b9a8
push dword [ebx + 0x3c]
mov ecx, 0x40ba58
mov esi, 0x4cbec0
push ecx
mov eax, 0x2f0
push ebx
push esi
push 0x46
call fcn.00415af8
cmp dword [ebx + 8], 0
jne 0x40b753
mov byte [ebx + 4], 1
jmp 0x40b7b3
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor edi, edi
mov dword [esp + 0x128], edx
mov ecx, dword [esp + 0x128]
mov dword [esp + 0x124], eax
mov dword [esp + 0x204], edi
cmp byte [ecx + edi], 0x80
jae 0x40b793
mov eax, dword [esp + 0x204]
inc eax
mov dword [esp + 0x204], eax
dec eax
movzx esi, byte [ecx + eax]
jmp 0x40b7a9
lea edx, [esp + 0x124]
push edx
lea eax, [esp + 0x208]
call fcn.00409328
mov esi, eax
lea eax, [ebx + 8]
mov dword [ebx], esi
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b851
movsx ecx, byte [ebx + 4]
xor cl, 1
je 0x40b851
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b851
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40b7e8
mov byte [ebx + 4], 1
jmp 0x40b83b
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x1c8], ecx
cmp byte [edx + ecx], 0x80
jae 0x40b81f
mov ecx, dword [esp + 0x1c8]
inc ecx
mov dword [esp + 0x1c8], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40b832
lea ecx, [esp + 0x6c]
push ecx
lea eax, [esp + 0x1cc]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b851
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40b7dd
lea eax, [ebx + 0x1c]
call fcn.0046c314
mov dword [esp + 0x20c], eax
mov dword [esp + 0x210], edx
cmp byte [esp + 0x20c], 0
je 0x40b9a8
push dword [esp + 0x210]
mov eax, ebx
call fcn.0040ba70
jmp 0x40b9a8
cmp dword [ebx + 8], 0
jne 0x40b894
mov byte [ebx + 4], 1
jmp 0x40b8ee
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor esi, esi
mov dword [esp + 0x80], edx
mov edi, dword [esp + 0x80]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x178], esi
cmp byte [edi + esi], 0x80
jae 0x40b8d1
mov eax, dword [esp + 0x178]
inc eax
mov dword [esp + 0x178], eax
dec eax
movzx ecx, byte [edi + eax]
jmp 0x40b8e4
lea edx, [esp + 0x7c]
push edx
lea eax, [esp + 0x17c]
call fcn.00409328
mov ecx, eax
lea eax, [ebx + 8]
mov dword [ebx], ecx
call fcn.004092b0
test dword [ebx + 0x18], 4
je 0x40b98c
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b98c
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
je 0x40b98c
lea esi, [ebx + 8]
cmp dword [esi], 0
jne 0x40b923
mov byte [ebx + 4], 1
jmp 0x40b976
mov edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor ecx, ecx
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x208], ecx
cmp byte [edx + ecx], 0x80
jae 0x40b95a
mov ecx, dword [esp + 0x208]
inc ecx
mov dword [esp + 0x208], ecx
dec ecx
movzx ecx, byte [edx + ecx]
jmp 0x40b96d
lea ecx, [esp + 0x5c]
push ecx
lea eax, [esp + 0x20c]
call fcn.00409328
mov ecx, eax
mov eax, esi
mov dword [ebx], ecx
call fcn.004092b0
movsx edx, byte [ebx + 4]
xor dl, 1
je 0x40b98c
mov edi, dword [ebx]
mov eax, edi
call fcn.0046b370
test al, al
jne 0x40b918
lea eax, [ebx + 0x1c]
call fcn.0046bfcc
jmp 0x40b9a8
mov esi, dword [ebx + 0x1c]
mov eax, ebx
call fcn.0040c278
mov eax, ebx
push esi
call fcn.0040ba70
movsx edx, byte [ebx + 4]
xor dl, 1
jne 0x409f99
mov ecx, 1
cmp dword [ebx + 0x24], ecx
je 0x40ba1e
lea esi, [ebx + 0x24]
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov dword [esp + 0x18], eax
lea edx, [eax + edx*4]
mov eax, dword [esi]
mov edi, dword [edx - 4]
dec eax
mov edx, dword [esp + 0x18]
mov dword [esi], eax
mov dword [esi + 4], edx
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], 0x4d6f90
call fcn.0046ad40
lea eax, [ebx + 0x1c]
push edi
call fcn.0046c180
cmp dword [ebx + 0x24], 1
sete cl
mov edx, 0x40ba64
push ecx
mov ecx, 0x4cbec0
mov eax, 0x305
push edx
push ebx
push ecx
push 0x46
call fcn.00462cc8
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
add esp, 0x228
ret