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

Disassembly:
push ebx
push esi
push edi
push ebp
push eax
mov eax, 4
add esp, 0xfffff004
push eax
dec eax
jne 0x40e5d2
mov eax, dword [esp + 0x4000]
add esp, 0xfffff860
mov ebx, eax
mov dword [esp], 0xffffffff
mov esi, dword [ebx + 4]
mov edi, dword [ebx + 8]
mov eax, dword [ebx + 0x843c]
test eax, eax
je 0x40e607
call fcn.00414c20
test edi, edi
jbe 0x40e610
cmp byte [esi], 5
je 0x40e614
xor edx, edx
jmp 0x40e619
mov edx, 1
mov byte [esp + 4], dl
cmp dword [ebx + 0x843c], 0
jne 0x40e62a
xor eax, eax
jmp 0x40e63c
mov eax, dword [ebx + 0x843c]
call fcn.004153f4
movzx eax, word [eax + 0x1804]
cmp byte [esp + 4], 0
je 0x40e64b
test al, 0x10
jne 0x40e64b
xor edx, edx
jmp 0x40e650
mov edx, 1
mov byte [esp + 5], dl
xor ecx, ecx
mov dword [ebx + 0x801c], ecx
test edi, edi
jbe 0x40e6be
cmp byte [esi], 5
jne 0x40e677
xor eax, eax
mov dword [ebx + 0x8020], eax
mov dword [ebx + 0x801c], 1
cmp byte [esi], 8
jne 0x40e690
mov dword [ebx + 0x801c], 1
xor edx, edx
inc esi
dec edi
mov dword [ebx + 0x8020], edx
test edi, edi
jbe 0x40e6be
cmp byte [esi], 7
jne 0x40e6be
mov dword [ebx + 0x801c], 1
mov dword [ebx + 0x8020], 1
xor ecx, ecx
mov cl, byte [esi + 1]
add esi, 2
sub edi, 2
mov dword [ebx + 0x8024], ecx
cmp dword [ebx + 0x8020], 0
je 0x40e762
push 0x404
push 0
lea eax, [esp + 0x1210]
push eax
call fcn.00424bd0
add esp, 0xc
push 0x404
push 0
lea edx, [esp + 0x1a14]
push edx
call fcn.00424bd0
add esp, 0xc
push 0x404
push 0
lea ecx, [esp + 0x2218]
push ecx
call fcn.00424bd0
add esp, 0xc
push 0x404
push 0
lea eax, [esp + 0x2a1c]
push eax
call fcn.00424bd0
add esp, 0xc
mov ecx, 1
lea edx, [esp + 0x2a14]
lea eax, [esp + 0x2210]
mov dword [edx + 0x400], ecx
mov dword [eax + 0x400], ecx
lea eax, [esp + 0x1a0c]
mov dword [eax + 0x400], ecx
lea eax, [esp + 0x1208]
mov dword [eax + 0x400], ecx
jmp 0x40e7af
push 0x4a8
push 0
lea edx, [esp + 0x94]
push edx
call fcn.00424bd0
add esp, 0xc
push 0xc0
push 0
lea eax, [esp + 0xe88]
push eax
call fcn.00424bd0
add esp, 0xc
push 0x70
push 0
lea edx, [esp + 0x10c4]
push edx
call fcn.00424bd0
add esp, 0xc
mov dword [esp + 0x4c0], 1
test edi, edi
je 0x40e9d0
xor ecx, ecx
mov cl, byte [esi]
cmp ecx, 0xc
ja case.0x40e7c4.6
jmp dword [ecx*4 + 0x40e7cb]
xor eax, eax
mov al, byte [esi + 1]
inc dword [esp + eax*4 + 0x8c]
sub edi, 2
add esi, 2
jmp 0x40e9c8
xor eax, eax
mov al, byte [esi + 1]
cmp eax, 0x20
jae 0x40e831
xor edx, edx
mov dl, byte [eax + 0x42b944]
inc dword [esp + edx*4 + 0x4c4]
jmp 0x40e843
shr eax, 3
xor ecx, ecx
mov cl, byte [eax + 0x42b964]
inc dword [esp + ecx*4 + 0x4c4]
xor edx, edx
xor ecx, ecx
mov dl, byte [esi + 3]
mov cl, byte [esi + 4]
shl edx, 8
xor eax, eax
shl ecx, 0x10
mov al, byte [esi + 2]
add eax, edx
add eax, ecx
cmp eax, 0x40
jae 0x40e86a
movzx eax, byte [eax + 0x42b9a0]
jmp 0x40e8b8
cmp eax, 0x800
jae 0x40e880
shr eax, 5
xor edx, edx
mov dl, byte [eax + 0x42b9e0]
mov eax, edx
jmp 0x40e8b8
cmp eax, 0x10000
jae 0x40e896
shr eax, 0xa
xor ecx, ecx
mov cl, byte [eax + 0x42ba20]
mov eax, ecx
jmp 0x40e8b8
cmp eax, 0x18000
jae 0x40e8a4
mov eax, 0x20
jmp 0x40e8b8
cmp eax, 0x20000
jae 0x40e8b2
mov eax, 0x21
jmp 0x40e8b8
shr eax, 0x10
add eax, 0x20
inc dword [esp + eax*4 + 0xe80]
add al, 0x14
mov byte [esi], al
sub edi, 5
add esi, 5
jmp 0x40e9c8
xor eax, eax
mov al, byte [esi + 1]
cmp eax, 0x20
jae 0x40e8e4
xor edx, edx
mov dl, byte [eax + 0x42ba90]
mov eax, edx
jmp 0x40e8ea
shr eax, 6
add eax, 4
inc dword [esp + eax*4 + 0x4a0]
sub edi, 2
add esi, 2
jmp 0x40e9c8
inc dword [esp + 0x48c]
dec edi
inc esi
jmp 0x40e9c8
xor ecx, ecx
mov cl, byte [esi + 1]
inc dword [esp + ecx*4 + 0x490]
xor eax, eax
mov al, byte [esi + 2]
cmp eax, 0x20
jae 0x40e931
xor edx, edx
mov dl, byte [eax + 0x42b944]
inc dword [esp + edx*4 + 0x10bc]
jmp 0x40e943
shr eax, 3
xor ecx, ecx
mov cl, byte [eax + 0x42b964]
inc dword [esp + ecx*4 + 0x10bc]
sub edi, 3
add esi, 3
jmp 0x40e9c8
cmp dword [ebx + 0x8020], 0
je 0x40e966
mov dword [ebx + 0x801c], 1
xor eax, eax
mov dword [ebx + 0x8020], eax
dec edi
inc esi
jmp 0x40e9c8
xor edx, edx
mov dl, byte [esi + 1]
lea ecx, [esp + 0x1208]
inc dword [ecx + edx*4]
sub edi, 2
add esi, 2
jmp 0x40e9c8
xor eax, eax
mov al, byte [esi + 1]
lea edx, [esp + 0x1a0c]
inc dword [edx + eax*4]
sub edi, 2
add esi, 2
jmp 0x40e9c8
xor ecx, ecx
mov cl, byte [esi + 1]
lea eax, [esp + 0x2210]
inc dword [eax + ecx*4]
sub edi, 2
add esi, 2
jmp 0x40e9c8
xor edx, edx
mov dl, byte [esi + 1]
lea ecx, [esp + 0x2a14]
inc dword [ecx + edx*4]
sub edi, 2
add esi, 2
jmp 0x40e9c8
dec edi
inc esi
test edi, edi
jne 0x40e7b7
cmp dword [ebx + 0x8020], 0
je 0x40eaae
lea edx, [esp + 0x1208]
mov ecx, 0x101
mov eax, ebx
call fcn.0040fc58
lea edx, [esp + 0x1a0c]
mov ecx, 0x101
mov eax, ebx
call fcn.0040fc58
lea edx, [esp + 0x2210]
mov ecx, 0x101
mov eax, ebx
call fcn.0040fc58
lea edx, [esp + 0x2a14]
mov ecx, 0x101
mov eax, ebx
call fcn.0040fc58
lea eax, [esp + 0x3218]
push eax
lea ecx, [esp + 0x43a4]
lea edx, [esp + 0x120c]
mov eax, 0x101
call fcn.0040e304
lea edx, [esp + 0x361c]
mov eax, 0x101
push edx
lea edx, [esp + 0x1a10]
lea ecx, [esp + 0x44a5]
call fcn.0040e304
lea ecx, [esp + 0x3a20]
mov eax, 0x101
push ecx
lea ecx, [esp + 0x45a6]
lea edx, [esp + 0x2214]
call fcn.0040e304
lea eax, [esp + 0x3e24]
push eax
lea ecx, [esp + 0x46a7]
lea edx, [esp + 0x2a18]
mov eax, 0x101
call fcn.0040e304
jmp 0x40eb7c
lea edx, [esp + 0x8c]
mov ecx, 0x12a
mov eax, ebx
call fcn.0040fc58
lea edx, [esp + 0xe80]
mov ecx, 0x30
mov eax, ebx
call fcn.0040fc58
lea edx, [esp + 0x10bc]
mov ecx, 0x1c
mov eax, ebx
call fcn.0040fc58
lea edx, [esp + 0x9d8]
mov eax, 0x12a
push edx
lea edx, [esp + 0x90]
lea ecx, [esp + 0x422c]
call fcn.0040e304
lea ecx, [esp + 0xffc]
mov eax, 0x30
push ecx
lea ecx, [esp + 0x4356]
lea edx, [esp + 0xe84]
call fcn.0040e304
lea eax, [esp + 0x1198]
push eax
lea ecx, [esp + 0x4386]
lea edx, [esp + 0x10c0]
mov eax, 0x1c
call fcn.0040e304
cmp dword [esp + 0xe0c], 0
jne 0x40eb7c
mov dword [esp + 0x8c], 2
lea edx, [esp + 0x9d8]
mov eax, 0x12a
push edx
lea edx, [esp + 0x90]
lea ecx, [esp + 0x422c]
call fcn.0040e304
cmp byte [esp + 4], 0
jne 0x40ebb2
cmp byte [esp + 5], 0
je 0x40eb9d
mov ecx, dword [ebx + 0x8028]
mov edx, dword [ebx + 0x802c]
mov eax, ebx
call fcn.0040e524
lea ecx, [esp + 0x43a0]
lea edx, [esp + 0x4228]
mov eax, ebx
call fcn.0040f828
mov esi, dword [ebx + 4]
mov edi, dword [ebx + 8]
test edi, edi
je 0x40f765
xor eax, eax
mov al, byte [esi]
cmp eax, 0xc
ja case.0x40ebcd.1
jmp dword [eax*4 + 0x40ebd4]
xor edx, edx
xor eax, eax
mov dl, byte [esi + 1]
mov al, byte [esi + 1]
movzx ebp, byte [esp + edx + 0x4228]
mov edx, dword [esp + eax*4 + 0x9d8]
mov dword [esp + 8], edx
cmp ebp, dword [ebx + 0x8014]
jge 0x40ec4a
sub dword [ebx + 0x8014], ebp
mov ecx, dword [ebx + 0x8014]
mov eax, dword [esp + 8]
shl eax, cl
or dword [ebx + 0x800c], eax
jmp 0x40ecce
sub ebp, dword [ebx + 0x8014]
mov ecx, ebp
mov edx, dword [esp + 8]
shr edx, cl
or edx, dword [ebx + 0x800c]
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xc]
shr eax, 8
mov edx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + edx + 0xc], al
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40ec8c
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0xc]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
sub eax, ebp
mov byte [ebx + ecx + 0xc], dl
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 8]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40ecce
mov eax, ebx
call fcn.0040fb54
sub edi, 2
add esi, 2
jmp 0x40f75d
xor edx, edx
mov dl, byte [esi + 1]
mov dword [esp + 0x10], edx
cmp dword [esp + 0x10], 0x20
jae 0x40ecf6
mov ecx, dword [esp + 0x10]
movzx ebp, byte [ecx + 0x42ba90]
jmp 0x40ed00
mov ebp, dword [esp + 0x10]
shr ebp, 6
add ebp, 4
xor eax, eax
mov al, byte [esp + ebp + 0x432d]
mov dword [esp + 0x14], eax
mov edx, dword [esp + ebp*4 + 0xdec]
mov dword [esp + 0x18], edx
mov ecx, dword [ebx + 0x8014]
cmp ecx, dword [esp + 0x14]
jle 0x40ed45
mov eax, dword [esp + 0x14]
sub dword [ebx + 0x8014], eax
mov ecx, dword [ebx + 0x8014]
mov edx, dword [esp + 0x18]
shl edx, cl
or dword [ebx + 0x800c], edx
jmp 0x40edd1
mov eax, dword [ebx + 0x8014]
sub dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
shr edx, cl
or edx, dword [ebx + 0x800c]
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x1c]
shr eax, 8
mov edx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + edx + 0xc], al
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40ed8d
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x1c]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
mov byte [ebx + ecx + 0xc], dl
sub eax, dword [esp + 0x14]
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x18]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40edd1
mov eax, ebx
call fcn.0040fb54
xor edx, edx
mov dl, byte [ebp + 0x42bab0]
mov ebp, edx
test edx, edx
je 0x40eeaf
mov dword [esp + 0x20], ebp
mov eax, dword [ebp*4 + 0x42b900]
and eax, dword [esp + 0x10]
mov dword [esp + 0x24], eax
mov ecx, dword [ebx + 0x8014]
cmp ecx, dword [esp + 0x20]
jle 0x40ee23
mov eax, dword [esp + 0x20]
sub dword [ebx + 0x8014], eax
mov ecx, dword [ebx + 0x8014]
mov edx, dword [esp + 0x24]
shl edx, cl
or dword [ebx + 0x800c], edx
jmp 0x40eeaf
mov eax, dword [ebx + 0x8014]
sub dword [esp + 0x20], eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
shr edx, cl
or edx, dword [ebx + 0x800c]
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x28]
shr eax, 8
mov edx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + edx + 0xc], al
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40ee6b
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x28]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
mov byte [ebx + ecx + 0xc], dl
sub eax, dword [esp + 0x20]
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x24]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40eeaf
mov eax, ebx
call fcn.0040fb54
sub edi, 2
add esi, 2
jmp 0x40f75d
xor edx, edx
mov dl, byte [esp + 0x4328]
mov ecx, dword [esp + 0xdd8]
mov eax, ebx
call fcn.0040e524
dec edi
inc esi
jmp 0x40f75d
xor edx, edx
xor eax, eax
mov dl, byte [esi + 1]
mov al, byte [esi + 1]
mov ecx, dword [esp + edx*4 + 0xddc]
xor edx, edx
mov dl, byte [esp + eax + 0x4329]
mov eax, ebx
call fcn.0040e524
xor edx, edx
mov dl, byte [esi + 2]
mov dword [esp + 0x30], edx
cmp dword [esp + 0x30], 0x20
jae 0x40ef1b
mov ecx, dword [esp + 0x30]
xor eax, eax
mov al, byte [ecx + 0x42b944]
mov dword [esp + 0x2c], eax
jmp 0x40ef2e
mov edx, dword [esp + 0x30]
shr edx, 3
xor ecx, ecx
mov cl, byte [edx + 0x42b964]
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
movzx edx, byte [esp + edx + 0x4382]
mov ecx, dword [esp + eax*4 + 0x1198]
mov eax, ebx
call fcn.0040e524
mov ecx, dword [esp + 0x2c]
xor eax, eax
mov al, byte [ecx + 0x42b984]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x40ef7a
mov edx, dword [esp + 0x2c]
mov eax, ebx
mov ecx, dword [edx*4 + 0x42b900]
mov edx, dword [esp + 0x2c]
and ecx, dword [esp + 0x30]
call fcn.0040e524
sub edi, 3
add esi, 3
jmp 0x40f75d
mov eax, ebx
call fcn.0040fb94
cmp dword [ebx + 0x843c], 0
je 0x40efa0
mov eax, dword [ebx + 0x843c]
call fcn.00414c68
cmp byte [esp + 4], 0
je 0x40efdb
cmp byte [esp + 5], 0
je 0x40efc1
mov ecx, dword [ebx + 0x8028]
mov edx, dword [ebx + 0x802c]
mov eax, ebx
call fcn.0040e524
lea ecx, [esp + 0x43a0]
lea edx, [esp + 0x4228]
mov eax, ebx
call fcn.0040f828
mov byte [esp + 4], 0
dec edi
inc esi
jmp 0x40f75d
mov eax, ebx
call fcn.0040fb94
cmp dword [ebx + 0x843c], 0
je 0x40effd
mov eax, dword [ebx + 0x843c]
call fcn.00414dc4
dec edi
inc esi
jmp 0x40f75d
dec edi
inc esi
jmp 0x40f75d
sub edi, 2
add esi, 2
jmp 0x40f75d
xor edx, edx
mov dword [esp], edx
xor ecx, ecx
mov cl, byte [esi + 1]
lea eax, [esp + 0x43a0]
movzx ebp, byte [eax + ecx]
xor eax, eax
mov al, byte [esi + 1]
lea edx, [esp + 0x3218]
mov ecx, dword [edx + eax*4]
mov dword [esp + 0x34], ecx
cmp ebp, dword [ebx + 0x8014]
jge 0x40f063
sub dword [ebx + 0x8014], ebp
mov ecx, dword [ebx + 0x8014]
mov eax, dword [esp + 0x34]
shl eax, cl
or dword [ebx + 0x800c], eax
jmp 0x40f0e7
sub ebp, dword [ebx + 0x8014]
mov ecx, ebp
mov eax, dword [esp + 0x34]
shr eax, cl
or eax, dword [ebx + 0x800c]
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x38]
shr edx, 8
mov eax, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + eax + 0xc], dl
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f0a5
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x38]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
sub eax, ebp
mov byte [ebx + ecx + 0xc], dl
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x34]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f0e7
mov eax, ebx
call fcn.0040fb54
sub edi, 2
add esi, 2
jmp 0x40f75d
mov dword [esp], 1
xor edx, edx
mov dl, byte [esi + 1]
lea ecx, [esp + 0x44a1]
xor eax, eax
movzx ebp, byte [ecx + edx]
mov al, byte [esi + 1]
lea edx, [esp + 0x361c]
mov ecx, dword [edx + eax*4]
mov dword [esp + 0x3c], ecx
cmp ebp, dword [ebx + 0x8014]
jge 0x40f141
sub dword [ebx + 0x8014], ebp
mov ecx, dword [ebx + 0x8014]
mov eax, dword [esp + 0x3c]
shl eax, cl
or dword [ebx + 0x800c], eax
jmp 0x40f1c5
sub ebp, dword [ebx + 0x8014]
mov ecx, ebp
mov eax, dword [esp + 0x3c]
shr eax, cl
or eax, dword [ebx + 0x800c]
mov dword [esp + 0x40], eax
mov edx, dword [esp + 0x40]
shr edx, 8
mov eax, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + eax + 0xc], dl
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f183
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x40]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
sub eax, ebp
mov byte [ebx + ecx + 0xc], dl
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x3c]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f1c5
mov eax, ebx
call fcn.0040fb54
sub edi, 2
add esi, 2
jmp 0x40f75d
mov dword [esp], 2
xor edx, edx
mov dl, byte [esi + 1]
lea ecx, [esp + 0x45a2]
xor eax, eax
movzx ebp, byte [ecx + edx]
mov al, byte [esi + 1]
lea edx, [esp + 0x3a20]
mov ecx, dword [edx + eax*4]
mov dword [esp + 0x44], ecx
cmp ebp, dword [ebx + 0x8014]
jge 0x40f21f
sub dword [ebx + 0x8014], ebp
mov ecx, dword [ebx + 0x8014]
mov eax, dword [esp + 0x44]
shl eax, cl
or dword [ebx + 0x800c], eax
jmp 0x40f2a3
sub ebp, dword [ebx + 0x8014]
mov ecx, ebp
mov eax, dword [esp + 0x44]
shr eax, cl
or eax, dword [ebx + 0x800c]
mov dword [esp + 0x48], eax
mov edx, dword [esp + 0x48]
shr edx, 8
mov eax, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + eax + 0xc], dl
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f261
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x48]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
sub eax, ebp
mov byte [ebx + ecx + 0xc], dl
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x44]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f2a3
mov eax, ebx
call fcn.0040fb54
sub edi, 2
add esi, 2
jmp 0x40f75d
mov dword [esp], 3
xor edx, edx
mov dl, byte [esi + 1]
lea ecx, [esp + 0x46a3]
xor eax, eax
movzx ebp, byte [ecx + edx]
mov al, byte [esi + 1]
lea edx, [esp + 0x3e24]
mov ecx, dword [edx + eax*4]
mov dword [esp + 0x4c], ecx
cmp ebp, dword [ebx + 0x8014]
jge 0x40f2fd
sub dword [ebx + 0x8014], ebp
mov ecx, dword [ebx + 0x8014]
mov eax, dword [esp + 0x4c]
shl eax, cl
or dword [ebx + 0x800c], eax
jmp 0x40f381
sub ebp, dword [ebx + 0x8014]
mov ecx, ebp
mov eax, dword [esp + 0x4c]
shr eax, cl
or eax, dword [ebx + 0x800c]
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x50]
shr edx, 8
mov eax, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + eax + 0xc], dl
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f33f
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x50]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
sub eax, ebp
mov byte [ebx + ecx + 0xc], dl
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x4c]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f381
mov eax, ebx
call fcn.0040fb54
sub edi, 2
add esi, 2
jmp 0x40f75d
xor edx, edx
mov dl, byte [esi + 1]
mov dword [esp + 0x54], edx
cmp dword [esp + 0x54], 0x20
jae 0x40f3a9
mov ecx, dword [esp + 0x54]
movzx ebp, byte [ecx + 0x42b944]
jmp 0x40f3b7
mov eax, dword [esp + 0x54]
shr eax, 3
movzx ebp, byte [eax + 0x42b964]
xor eax, eax
mov al, byte [esp + ebp + 0x4336]
mov dword [esp + 0x58], eax
mov edx, dword [esp + ebp*4 + 0xe10]
mov dword [esp + 0x5c], edx
mov ecx, dword [ebx + 0x8014]
cmp ecx, dword [esp + 0x58]
jle 0x40f3fc
mov eax, dword [esp + 0x58]
sub dword [ebx + 0x8014], eax
mov ecx, dword [ebx + 0x8014]
mov edx, dword [esp + 0x5c]
shl edx, cl
or dword [ebx + 0x800c], edx
jmp 0x40f488
mov eax, dword [ebx + 0x8014]
sub dword [esp + 0x58], eax
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
shr edx, cl
or edx, dword [ebx + 0x800c]
mov dword [esp + 0x60], edx
mov eax, dword [esp + 0x60]
shr eax, 8
mov edx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + edx + 0xc], al
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f444
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x60]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
mov byte [ebx + ecx + 0xc], dl
sub eax, dword [esp + 0x58]
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x5c]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f488
mov eax, ebx
call fcn.0040fb54
xor edx, edx
mov dl, byte [ebp + 0x42b984]
mov ebp, edx
test edx, edx
je 0x40f566
mov dword [esp + 0x64], ebp
mov eax, dword [ebp*4 + 0x42b900]
and eax, dword [esp + 0x54]
mov dword [esp + 0x68], eax
mov ecx, dword [ebx + 0x8014]
cmp ecx, dword [esp + 0x64]
jle 0x40f4da
mov eax, dword [esp + 0x64]
sub dword [ebx + 0x8014], eax
mov ecx, dword [ebx + 0x8014]
mov edx, dword [esp + 0x68]
shl edx, cl
or dword [ebx + 0x800c], edx
jmp 0x40f566
mov eax, dword [ebx + 0x8014]
sub dword [esp + 0x64], eax
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x68]
shr edx, cl
or edx, dword [ebx + 0x800c]
mov dword [esp + 0x6c], edx
mov eax, dword [esp + 0x6c]
shr eax, 8
mov edx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + edx + 0xc], al
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f522
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x6c]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
mov byte [ebx + ecx + 0xc], dl
sub eax, dword [esp + 0x64]
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x68]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f566
mov eax, ebx
call fcn.0040fb54
xor ecx, ecx
xor eax, eax
mov cl, byte [esi + 3]
mov al, byte [esi + 4]
shl ecx, 8
xor edx, edx
mov dl, byte [esi + 2]
shl eax, 0x10
add edx, ecx
add edx, eax
xor eax, eax
mov dword [esp + 0x70], edx
movzx ebp, byte [esi]
add ebp, 0xffffffec
mov al, byte [esp + ebp + 0x4352]
mov dword [esp + 0x74], eax
mov edx, dword [esp + ebp*4 + 0xffc]
mov dword [esp + 0x78], edx
mov ecx, dword [ebx + 0x8014]
cmp ecx, dword [esp + 0x74]
jle 0x40f5ce
mov eax, dword [esp + 0x74]
sub dword [ebx + 0x8014], eax
mov ecx, dword [ebx + 0x8014]
mov edx, dword [esp + 0x78]
shl edx, cl
or dword [ebx + 0x800c], edx
jmp 0x40f65a
mov eax, dword [ebx + 0x8014]
sub dword [esp + 0x74], eax
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
shr edx, cl
or edx, dword [ebx + 0x800c]
mov dword [esp + 0x7c], edx
mov eax, dword [esp + 0x7c]
shr eax, 8
mov edx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + edx + 0xc], al
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f616
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x7c]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
mov byte [ebx + ecx + 0xc], dl
sub eax, dword [esp + 0x74]
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x78]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f65a
mov eax, ebx
call fcn.0040fb54
xor edx, edx
mov dl, byte [ebp + 0x42ba60]
mov ebp, edx
mov dword [esp + 0x80], ebp
mov ecx, dword [ebp*4 + 0x42b900]
and ecx, dword [esp + 0x70]
mov dword [esp + 0x84], ecx
mov eax, dword [ebx + 0x8014]
cmp eax, dword [esp + 0x80]
jle 0x40f6b3
mov edx, dword [esp + 0x80]
sub dword [ebx + 0x8014], edx
mov ecx, dword [ebx + 0x8014]
mov eax, dword [esp + 0x84]
shl eax, cl
or dword [ebx + 0x800c], eax
jmp 0x40f757
mov edx, dword [ebx + 0x8014]
sub dword [esp + 0x80], edx
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x84]
shr eax, cl
or eax, dword [ebx + 0x800c]
mov dword [esp + 0x88], eax
mov edx, dword [esp + 0x88]
shr edx, 8
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov byte [ebx + ecx + 0xc], dl
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f70a
mov eax, ebx
call fcn.0040fb54
mov dl, byte [esp + 0x88]
mov ecx, dword [ebx + 0x8010]
inc dword [ebx + 0x8010]
mov eax, 0x10
mov byte [ebx + ecx + 0xc], dl
sub eax, dword [esp + 0x80]
mov dword [ebx + 0x8014], eax
mov ecx, eax
mov edx, dword [esp + 0x84]
shl edx, cl
mov dword [ebx + 0x800c], edx
cmp dword [ebx + 0x8010], 0x7ff0
jne 0x40f757
mov eax, ebx
call fcn.0040fb54
sub edi, 5
add esi, 5
test edi, edi
jne 0x40ebc0
mov edx, dword [ebx + 8]
xor ecx, ecx
mov dword [ebx + 0x8018], edx
mov dword [ebx + 8], ecx
cmp dword [ebx + 0x8020], 0
je 0x40f7d3
inc dword [esp]
mov eax, dword [esp]
cmp eax, dword [ebx + 0x8024]
jne 0x40f78f
xor edx, edx
mov dword [esp], edx
mov eax, dword [esp]
mov edx, eax
shl eax, 8
add eax, edx
xor ecx, ecx
mov cl, byte [esp + eax + 0x44a0]
mov dword [ebx + 0x802c], ecx
mov eax, dword [esp + eax*4 + 0x3618]
mov dword [ebx + 0x8028], eax
push 0x404
lea edx, [esp + 0x43a4]
push edx
lea ecx, [ebx + 0x8038]
push ecx
call fcn.00424b60
add esp, 0xc
jmp 0x40f80b
xor eax, eax
mov al, byte [esp + 0x4335]
mov dword [ebx + 0x802c], eax
mov edx, dword [esp + 0xe0c]
mov dword [ebx + 0x8028], edx
push 0x176
lea ecx, [esp + 0x422c]
push ecx
lea eax, [ebx + 0x8038]
push eax
call fcn.00424b60
add esp, 0xc
mov eax, dword [ebx + 0x843c]
test eax, eax
je 0x40f81a
call fcn.00414c2c
add esp, 0x47a4
pop ebp
pop edi
pop esi
pop ebx
ret