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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, fcn.0041f2b1
push ebx
sub esp, 0x11c
mov ebx, 0x41f01b
movzx eax, byte [ebp + 0xc]
mov byte [ebp - 0x80], 0
mov edx, dword [ebp + 8]
mov dword [ebp - 0xbc], esi
mov dword [ebp - 0xc0], ebx
mov edx, dword [edx]
test al, al
mov byte [ebp - 0x79], al
mov dword [ebp - 0xb8], edx
je 0x40acbf
mov ecx, dword [ebp + 8]
cmp word [ecx + 0x14], 0
je 0x40acbf
movzx eax, word [ecx + 0xe]
mov byte [ebp - 0x7e], 0
mov byte [ebp - 0x7b], 0
cmp dword [edx + 0x78], eax
mov byte [ebp - 0x7a], 0
mov byte [ebp - 0x7d], 0
jl 0x40acca
mov esi, dword [ebp - 0xb8]
mov esi, dword [esi + 0x398]
mov dword [ebp - 0xec], esi
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0xb8]
mov edx, dword [ebp + 8]
mov dword [eax + 0x5c], 0
movzx edx, word [edx + 0x1c]
movzx eax, word [ecx + 0x20]
sub edx, eax
mov eax, dword [ecx + 0x44]
mov dword [ebp - 0x9c], edx
mov eax, dword [eax + 4]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call fcn.0042057c
test byte [ebp - 0x79], 8
je 0x40a484
mov byte [ebp - 0x7b], 1
mov ebx, dword [ebp - 0xb8]
mov byte [ebp - 0x7a], 1
and byte [ebx + 2], 0xf7
mov esi, dword [ebp - 0xb8]
mov edx, dword [ebp + 8]
mov ecx, dword [esi + 0x2dc]
test ecx, ecx
setne byte [ebp - 0x7c]
xor eax, eax
test byte [edx + 0x81], 0x20
je 0x40a4ab
test byte [esi], 4
je 0x40a4ab
mov al, 1
or byte [ebp - 0x7c], al
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ebx + 0xd0]
movsx ecx, word [ecx + 0x2cc]
mov edx, dword [eax]
mov dword [ebp - 0x90], ecx
mov dword [ebp - 0x70], edx
mov eax, dword [eax + 4]
mov dword [esp], ebx
mov dword [ebp - 0x6c], eax
call fcn.0040a2a0
movzx eax, byte [ebx + 0x128]
and al, 2
mov byte [ebp - 0x7f], al
je 0x40a5fd
cmp word [ebx + 0x12], 0
je 0x40a5fd
movzx eax, word [ebx + 0x1c]
mov edx, dword [ebx + 0x118]
mov ecx, dword [ebx + 0x11c]
mov esi, dword [ebp + 8]
add eax, edx
mov edx, dword [ebx + 0x114]
mov eax, dword [edx + eax*4]
lea ecx, [eax + ecx*4]
mov dword [ebp - 0xac], ecx
mov ecx, dword [ecx]
mov ebx, dword [ebp - 0xac]
xor ecx, 0x100000
mov edx, ecx
and edx, 0x3ffff
mov dword [ebx], ecx
mov eax, dword [esi + 0xdc]
mov dword [ebp - 0xa0], edx
cmp eax, 2
jg 0x40b978
xor ebx, ebx
cmp eax, 2
jle 0x40b9ed
mov eax, dword [ebp - 0xb8]
mov esi, 0x103
test byte [eax + 0x34], 4
je 0x40b9ed
mov edx, ecx
mov eax, esi
and edx, 0xfffc0000
shl eax, 9
or edx, ebx
mov ecx, dword [ebp - 0xac]
or edx, eax
mov eax, edx
and eax, 0x30000000
mov dword [ecx], edx
cmp eax, 0x20000000
je 0x40bc29
cmp eax, 0x30000000
jne 0x40a5fd
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x11c]
test eax, eax
jle 0x40a5fd
sub dword [ebp - 0xac], 4
mov eax, dword [ebp - 0xac]
mov edx, dword [eax]
mov eax, edx
and eax, 0x30000000
cmp eax, 0x20000000
jne 0x40a5fd
mov byte [ebp - 0x80], 0xff
xor edx, 0x100000
shl esi, 9
mov eax, edx
and eax, 0xfffffe00
mov ecx, edx
or eax, ebx
mov ebx, dword [ebp - 0xac]
and eax, 0xfffc01ff
and ecx, 0x3ffff
mov dword [ebp - 0xa4], ecx
or eax, esi
mov dword [ebx], eax
cmp word [ebp - 0x90], 0xffff
je 0x40b580
mov esi, dword [ebp + 8]
mov edi, dword [esi + 0x118]
movzx eax, word [esi + 0x20]
add eax, edi
cmp eax, dword [ebp - 0x90]
je 0x40b88b
mov ebx, dword [ebp + 8]
movzx ecx, word [ebx + 0x10]
movzx eax, cx
cmp dword [ebp - 0x90], eax
jge 0x40a650
movzx edi, word [ebx + 0xe]
mov esi, dword [ebp - 0xb8]
mov edx, dword [esi + 0x2d0]
cmp edx, edi
jl 0x40b8f9
mov ebx, dword [ebp + 8]
cmp word [ebx + 0x12], 0
setne al
cmp byte [ebp - 0x7f], 0
sete dl
or eax, edx
test al, 1
je 0x40b592
mov esi, dword [ebp - 0xb8]
mov edi, 0xffffffff
mov dword [esi + 0x2cc], edi
cmp byte [ebp - 0x79], 1
mov eax, dword [ebp - 0xb8]
movsx ebx, word [eax + 0xa]
je 0x40b609
xor eax, eax
test cx, cx
mov dword [ebp - 0x8c], eax
je 0x40ac0f
mov edx, dword [ebp + 8]
movzx edx, word [edx + 0xe]
mov word [ebp - 0xee], dx
mov byte [ebp - 0xcd], 0
mov ecx, dword [ebp + 8]
xor esi, esi
mov eax, dword [ebp - 0x9c]
mov edx, dword [ebp - 0x8c]
mov ebx, dword [ebp - 0x8c]
add edx, eax
mov eax, dword [ecx + 0x10c]
cmp word [ebp - 0xee], 0
mov eax, dword [eax + edx*4]
mov dword [ebp - 0xb4], eax
mov eax, dword [ecx + 0x114]
mov edx, dword [eax + edx*4]
mov eax, dword [ecx + 0xf8]
mov dword [ebp - 0xac], edx
mov eax, dword [eax + ebx*4]
mov dword [ebp - 0xb0], eax
mov eax, dword [ecx + 0xfc]
mov eax, dword [eax + ebx*4]
mov dword [ebp - 0xa8], eax
jne 0x40a738
jmp 0x40a794
test cl, cl
sete al
or eax, edx
test al, 1
je 0x40acf7
lea eax, [esi + 1]
movsx esi, ax
movzx eax, word [ebp - 0xee]
cmp esi, eax
jge 0x40a794
mov eax, dword [ebp - 0xb0]
xor edx, edx
mov ebx, dword [ebp - 0xb4]
movzx ecx, byte [esi + eax]
cmp byte [esi + ebx], cl
je 0x40adf4
cmp byte [ebp - 0xcd], 0
je 0x40a718
mov byte [ebp - 0xcd], 0
mov eax, dword [ebp - 0xb0]
test dl, dl
mov byte [esi + eax], 0
je 0x40ad00
mov edx, dword [ebp + 8]
lea eax, [esi + 1]
movsx esi, ax
movzx edx, word [edx + 0xe]
mov word [ebp - 0xee], dx
movzx eax, word [ebp - 0xee]
cmp esi, eax
jl 0x40a738
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0x8c]
movzx eax, word [ebx + 0xa]
movzx edx, word [ebx + 0x16]
imul eax, ecx
add eax, edx
mov dword [ebp - 0xe0], eax
mov eax, dword [ebx + 0x44]
mov esi, dword [ebp - 0xe0]
mov edx, dword [eax + 0x48]
add esi, edx
mov dword [ebp - 0xdc], esi
xor esi, esi
cmp word [ebp - 0xee], 0
je 0x40abee
lea esi, [esi]
lea edi, [edi]
mov ecx, dword [ebp - 0xb4]
mov ebx, dword [ebp - 0xb0]
mov eax, dword [ebp - 0xac]
movzx edx, byte [esi + ecx]
mov edi, dword [eax + esi*4]
cmp dl, byte [esi + ebx]
je 0x40b0b0
mov byte [ebp - 0xe6], 0
mov eax, 1
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0xb0]
mov byte [esi + eax], dl
mov ecx, dword [ebp - 0xec]
mov byte [ecx], dl
mov edx, dword [ebp + 8]
mov ebx, dword [ebp - 0xa8]
movzx eax, word [edx + 8]
movzx edx, word [edx + 0x16]
mov dword [ebx + esi*4], edi
imul eax, esi
add eax, edx
mov dword [ebp - 0xd8], eax
test edi, 0xc0000
je 0x40ae13
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x48]
test eax, eax
je 0x40ae13
movzx ebx, byte [ecx + 0xc]
mov eax, edi
and eax, 0x30000000
and bl, 2
cmp eax, 0x20000000
mov byte [ebp - 0xe7], bl
je 0x40ae34
lea esi, [esi]
test edi, 0x20000000
je 0x40a8aa
mov edx, dword [ebp - 0xa8]
and edi, 0xcfffffff
mov ecx, dword [ebp - 0xb0]
mov dword [edx + esi*4], edi
mov byte [esi + ecx], 0x20
mov ebx, dword [ebp - 0xec]
mov byte [ebx], 0x20
cmp byte [ebp - 0x7e], 0
jne 0x40b200
cmp byte [ebp - 0xe7], 0
jne 0x40a98b
mov ecx, dword [ebp + 8]
lea eax, [esi + 1]
xor ebx, ebx
movsx esi, ax
movzx eax, word [ecx + 0xe]
jmp 0x40a96d
mov eax, dword [ebp - 0xac]
cmp dword [eax + esi*4], edi
jne 0x40a976
mov eax, dword [ebp - 0x94]
mov ecx, dword [ebp - 0xb4]
lea edx, [eax + 1]
movsx edx, dx
mov dword [ebp - 0x94], edx
movzx edx, byte [esi + ecx]
mov ecx, dword [ebp - 0xec]
mov byte [eax + ecx], dl
mov eax, dword [ebp - 0xb4]
mov edx, dword [ebp - 0xb0]
movzx ecx, byte [esi + eax]
cmp cl, byte [esi + edx]
je 0x40aec0
cmp byte [ebp - 0x7c], 0
je 0x40a943
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0x94]
shr eax, 0x1f
add eax, edx
sar eax, 1
mov edx, ebx
cwde
inc ebx
cmp edx, eax
jg 0x40a976
mov ebx, dword [ebp - 0xb0]
mov byte [esi + ebx], cl
mov edx, dword [ebp - 0xac]
xor ebx, ebx
mov ecx, dword [ebp - 0xa8]
mov eax, dword [edx + esi*4]
mov dword [ecx + esi*4], eax
mov edx, dword [ebp + 8]
lea eax, [esi + 1]
movsx esi, ax
movzx eax, word [edx + 0xe]
dec eax
cmp esi, eax
jl 0x40a8d5
lea eax, [esi - 1]
movsx esi, ax
mov eax, dword [ebp - 0x94]
sub eax, ebx
cwde
mov dword [ebp - 0x94], eax
mov ecx, dword [ebp - 0x94]
mov dword [ebp - 0x98], ecx
mov ebx, dword [ebp - 0x94]
test edi, 0x40000
mov eax, dword [ebp - 0xec]
mov byte [ebx + eax], 0
je 0x40a9d0
mov eax, edi
and eax, 0x1ff
cmp eax, 1
jbe 0x40a9d0
lea edx, [eax + 8]
cmp eax, 9
mov dword [ebp - 0x84], edx
jbe 0x40a9de
lea esi, [esi]
mov ecx, edi
and ecx, 0x1ff
mov dword [ebp - 0x84], ecx
mov edx, edi
and edx, 0x3fe00
shr edx, 9
test edi, 0x80000
mov eax, edx
je 0x40aa00
cmp edx, 1
jbe 0x40aa00
cmp edx, 9
ja 0x40aa00
lea eax, [edx + 8]
movzx eax, ax
and edi, 0x30fc0000
mov dword [ebp - 0x88], eax
mov eax, edi
and eax, 0xc00000
cmp eax, 0x400000
je 0x40b1b7
cmp eax, 0x800000
je 0x40b314
test edi, 0x100000
je 0x40aab0
mov eax, dword [ebp - 0x84]
mov ebx, dword [ebp - 0x88]
mov dword [ebp - 0x88], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x84], ebx
cmp dword [eax + 0xdc], 2
jle 0x40aab0
mov edx, dword [ebp - 0xb8]
mov eax, dword [edx + 0x34]
test ah, 2
je 0x40aab0
test al, 4
je 0x40b43b
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 0x88]
mov edx, dword [ecx + 0xd0]
mov eax, dword [edx + 0x408]
cmp dword [edx + ebx*4], eax
je 0x40aab0
mov ecx, dword [ebp - 0x84]
mov eax, dword [edx + 0x424]
cmp dword [edx + ecx*4], eax
je 0x40aab0
mov eax, 0x109
mov dword [ebp - 0x88], eax
lea esi, [esi]
lea edi, [edi]
xor eax, eax
cmp word [ebp - 0x88], 1
mov dword [ebp - 0xe4], eax
je 0x40aae2
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x88]
mov eax, dword [ebx + 0xd0]
mov eax, dword [eax + edx*4]
mov dword [ebp - 0x6c], eax
mov eax, 8
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x40af00
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp - 0x84]
mov eax, dword [ecx + 0xd0]
mov eax, dword [eax + ebx*4]
mov dword [ebp - 0x70], eax
or dword [ebp - 0xe4], 4
mov ebx, dword [ebp - 0xe4]
test ebx, ebx
jne 0x40b144
cmp byte [ebp - 0x7e], 0
jne 0x40ab40
test edi, 0xc0000
je 0x40ab40
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x48]
test eax, eax
jne 0x40b407
lea esi, [esi]
lea edi, [edi]
cmp byte [ebp - 0x7d], 0
jne 0x40b23e
cmp word [ebp - 0x88], 1
sete al
xor edx, edx
cmp byte [ebp - 0x7c], 0
setne dl
test edx, eax
je 0x40af57
mov ebx, dword [ebp + 8]
cmp word [ebx + 0x14], 0
jne 0x40b34f
xor ebx, ebx
cmp dword [ebp - 0x94], 0
jmp 0x40ab97
mov ecx, dword [ebp - 0xec]
cmp byte [ecx + ebx], 0x20
jne 0x40b9f7
inc ebx
cmp dword [ebp - 0x94], ebx
jg 0x40ab80
test edi, 0xc0000
jne 0x40b060
and edi, 0x200000
je 0x40abbd
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x44]
cmp dword [eax + 0x4c], 1
jg 0x40b399
mov ebx, dword [ebp - 0xe4]
test ebx, ebx
jne 0x40b170
mov ebx, dword [ebp + 8]
movzx ebx, word [ebx + 0xe]
mov word [ebp - 0xee], bx
lea eax, [esi + 1]
movsx esi, ax
movzx eax, word [ebp - 0xee]
cmp esi, eax
jl 0x40a7e0
mov eax, dword [ebp - 0x8c]
mov esi, dword [ebp + 8]
inc eax
cwde
mov dword [ebp - 0x8c], eax
movzx eax, word [esi + 0x10]
cmp dword [ebp - 0x8c], eax
jl 0x40a6b0
cmp byte [ebp - 0x7f], 0
je 0x40ac6c
mov eax, dword [ebp + 8]
cmp word [eax + 0x12], 0
je 0x40b785
movzx eax, word [eax + 0x1c]
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x118]
add eax, ecx
mov ecx, edx
mov edx, dword [edx + 0x114]
mov ecx, dword [ecx + 0x11c]
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0xa0]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx]
mov dword [ebp - 0xac], ecx
xor eax, 0x100000
and eax, 0xfffc0000
or eax, edx
cmp byte [ebp - 0x80], 0
mov dword [ecx], eax
jne 0x40b94e
mov ebx, dword [ebp + 8]
mov dword [esp], ebx
call fcn.0040a2a0
cmp byte [ebp - 0x7a], 0
je 0x40ac8a
movzx edx, word [ebx + 0x16]
test dx, dx
jne 0x40bb4f
cmp byte [ebp - 0x7b], 0
je 0x40aca0
mov esi, dword [ebp + 8]
movzx edx, word [esi + 0x16]
test dx, dx
jne 0x40bb10
test byte [ebp - 0x79], 4
jne 0x40b5f0
mov ecx, dword [ebp - 0xb8]
movzx eax, byte [ecx]
mov word [ecx + 0xa], 0
or al, 0x40
and al, 0xfe
mov byte [ecx], al
add esp, 0x11c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [edx + 0x78], eax
inc eax
mov dword [esp + 4], eax
mov eax, dword [edx + 0x398]
mov dword [esp], eax
call fcn.004055b0
mov dword [ebp - 0xec], eax
mov ebx, dword [ebp - 0xb8]
mov dword [ebx + 0x398], eax
jmp 0x40a42d
cmp cl, 0x20
je 0x40a727
mov edx, dword [ebp - 0xa8]
xor eax, eax
test dword [edx + esi*4], 0xc0000
setne al
test eax, eax
mov dword [ebp - 0xd4], eax
je 0x40ad30
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x48]
test eax, eax
mov edx, eax
jne 0x40ad36
nop
lea esi, [esi]
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x44]
mov byte [ebp - 0xe5], 0
mov ebx, dword [edx + 0x44]
test ebx, ebx
je 0x40ade6
mov edi, dword [edx + 0xc]
movzx eax, cl
cmp eax, edi
jb 0x40ade6
cmp eax, dword [edx + 0x10]
ja 0x40ade6
mov byte [ebp - 0xe5], 1
sub eax, edi
lea eax, [eax + eax*2]
cmp word [ebx + eax*4], 0
js 0x40ade6
lea esi, [esi]
lea edi, [edi]
cmp byte [ebp - 0xe5], 0
je 0x40adc0
mov edi, dword [edx + 0xc]
movzx eax, cl
mov edx, dword [edx + 0x44]
mov ebx, dword [ebp - 0xd4]
sub eax, edi
lea eax, [eax + eax*2]
shl eax, 2
movsx ecx, word [eax + edx + 4]
movsx eax, word [eax + edx + 2]
add eax, ebx
cmp ecx, eax
jge 0x40b3eb
lea esi, [esi]
lea edi, [edi]
mov eax, dword [ebp + 8]
movzx eax, word [eax + 0xe]
mov word [ebp - 0xee], ax
movzx eax, ax
dec eax
cmp esi, eax
je 0x40b3fe
mov byte [ebp - 0xcd], 1
jmp 0x40a727
test esi, esi
jne 0x40b33f
mov byte [ebp - 0x7a], 1
jmp 0x40ad80
mov ebx, dword [ebp - 0xac]
mov eax, dword [ebx + esi*4]
mov ebx, dword [ebp - 0xa8]
cmp dword [ebx + esi*4], eax
jne 0x40a753
mov dl, 1
jmp 0x40a753
mov edx, dword [ebp + 8]
movzx eax, byte [edx + 0xc]
and al, 1
mov byte [ebp - 0xe7], al
mov eax, edi
and eax, 0x30000000
cmp eax, 0x20000000
jne 0x40a880
mov ecx, dword [ebp + 8]
movzx eax, word [ecx + 0xe]
dec eax
cmp esi, eax
jge 0x40a880
mov ebx, dword [ebp - 0xac]
mov eax, dword [ebx + esi*4 + 4]
and eax, 0x30000000
cmp eax, 0x30000000
jne 0x40a880
cmp byte [ebp - 0x7e], 0
jne 0x40b463
mov eax, dword [ecx + 0x50]
test eax, eax
jne 0x40b8af
mov ebx, dword [ebp - 0xec]
mov ecx, 2
lea eax, [esi + 1]
mov byte [ebx + 1], 0x20
mov byte [ebx], 0x20
mov dword [ebp - 0x94], ecx
mov ecx, dword [ebp - 0xec]
movsx esi, ax
cmp byte [ecx], 0
js 0x40bbff
mov eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0x94]
shr eax, 0x1f
add eax, edx
sar eax, 1
cwde
mov dword [ebp - 0x98], eax
jmp 0x40a997
mov edx, dword [ebp - 0xa8]
mov eax, dword [edx + esi*4]
mov edx, dword [ebp - 0xac]
cmp dword [edx + esi*4], eax
jne 0x40a922
cmp byte [ebp - 0x7c], 0
jne 0x40a976
cmp cl, 0x20
je 0x40a960
inc ebx
cmp ebx, 0x20
jle 0x40a960
jmp 0x40a976
test edi, 0x40000
je 0x40b2b0
mov eax, dword [ebp + 8]
cmp dword [eax + 0xdc], 2
jle 0x40ab0c
mov edx, dword [ebp - 0xb8]
cmp byte [edx + 0x34], 0
jns 0x40ab0c
mov eax, dword [eax + 0xd0]
mov edx, dword [eax + 0x41c]
cmp dword [eax], edx
je 0x40ab0c
mov ebx, dword [ebp - 0x88]
cmp dword [eax + ebx*4], edx
je 0x40ab0c
mov dword [ebp - 0x70], edx
jmp 0x40ab05
movzx ebx, byte [ebp - 0xe7]
or bl, byte [ebp - 0xe6]
je 0x40b266
mov eax, dword [ebp - 0x6c]
mov ecx, 4
mov edx, dword [ebp + 8]
mov dword [esp + 8], ecx
mov ebx, dword [ebp - 0x70]
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x78]
mov dword [esp + 0xc], eax
mov eax, dword [edx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x7c]
mov dword [esp], eax
call fcn.0041e734
mov ecx, dword [ebp + 8]
movzx edx, word [ecx + 0x1a]
movzx eax, word [ecx + 0xa]
sub eax, edx
mov edx, dword [ebp - 0x94]
mov dword [esp + 0x18], eax
movzx eax, word [ecx + 8]
imul eax, edx
mov edx, dword [ebp - 0xd8]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0xe0]
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call fcn.0041f45b
mov dword [ebp - 0x70], ebx
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x78]
mov dword [esp + 0xc], ecx
mov eax, 4
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x7c]
mov dword [esp], eax
call fcn.0041e734
mov eax, dword [ebp - 0x98]
mov edx, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xdc]
mov dword [esp + 0x18], eax
mov ebx, dword [ebp - 0xd8]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], ebx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x40]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x7c]
mov dword [esp], eax
call dword [ebp - 0xbc]
test edi, 0xc0000
je 0x40aba5
mov eax, dword [ebp - 0xec]
mov ebx, dword [ebp - 0x98]
mov edx, dword [ebp - 0xdc]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0xd8]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x18], ebx
inc eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call dword [ebp - 0xbc]
jmp 0x40aba5
mov eax, dword [ebp - 0xa8]
mov ecx, dword [eax + esi*4]
cmp ecx, edi
je 0x40b10c
cmp dl, 0x20
jne 0x40a802
test edi, 0x100000
je 0x40b456
mov eax, edi
mov ebx, edi
and eax, 0x1ff
and ebx, 0x30ec0000
shl eax, 9
or ebx, eax
test ecx, 0x100000
je 0x40b449
mov eax, ecx
and ecx, 0x1ff
and eax, 0x30ec0000
shl ecx, 9
or eax, ecx
cmp ebx, eax
jne 0x40a802
mov eax, edi
and eax, 0x30000000
cmp eax, 0x20000000
jne 0x40abd9
mov ecx, dword [ebp - 0xb0]
mov ebx, dword [ebp - 0xb4]
movzx eax, byte [esi + ecx + 1]
cmp byte [esi + ebx + 1], al
jne 0x40a802
lea eax, [esi + 1]
movsx esi, ax
jmp 0x40abd9
mov edx, dword [ebp - 0xe4]
lea eax, [ebp - 0x78]
mov ecx, dword [ebp + 8]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov eax, dword [ecx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call fcn.0041e734
jmp 0x40ab1a
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 0xd0]
mov eax, dword [edx]
mov dword [ebp - 0x70], eax
mov eax, dword [edx + 4]
mov edx, dword [ebp - 0xe4]
mov dword [ebp - 0x6c], eax
lea eax, [ebp - 0x78]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov eax, dword [ebx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x7c]
mov dword [esp], eax
call fcn.0041e734
movzx ecx, word [ebx + 0xe]
mov word [ebp - 0xee], cx
jmp 0x40abd9
xor ebx, ebx
cmp dword [ebp - 0x94], 0
jmp 0x40b1e4
setg al
xor edx, edx
cmp cl, 0x7f
setne dl
test edx, eax
je 0x40b1dd
mov edx, dword [ebp - 0xec]
sub cl, 0x5f
mov byte [edx + ebx], cl
inc ebx
cmp dword [ebp - 0x94], ebx
jle 0x40aa2c
mov eax, dword [ebp - 0xec]
movzx ecx, byte [eax + ebx]
cmp cl, 0x5f
jne 0x40b1c2
mov byte [eax + ebx], 0x7f
jmp 0x40b1dd
mov byte [ebp - 0x7e], 0
mov edx, dword [ebp + 8]
mov ebx, fcn.0041f2b1
mov eax, dword [edx + 0x44]
mov eax, dword [eax + 4]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x7c]
mov dword [esp], eax
call fcn.0042057c
mov dword [ebp - 0xbc], ebx
mov ecx, 0x41f01b
mov dword [ebp - 0xc0], ecx
jmp 0x40a8b4
mov byte [ebp - 0x7d], 0
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x44]
mov eax, dword [eax + 4]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call fcn.0042057c
jmp 0x40ab4a
mov ecx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xdc]
mov ebx, dword [ebp - 0xec]
mov dword [esp + 0x18], ecx
mov edx, dword [ebp - 0xd8]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
mov eax, dword [ecx + 0x40]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call dword [ebp - 0xc0]
jmp 0x40ab99
test edi, 0x200000
je 0x40ab0c
mov eax, dword [ebp + 8]
cmp dword [eax + 0xdc], 2
jle 0x40ab0c
mov edx, dword [ebp - 0xb8]
test byte [edx + 0x35], 1
je 0x40ab0c
mov eax, dword [eax + 0xd0]
mov edx, dword [eax + 0x420]
cmp dword [eax], edx
je 0x40ab0c
mov ebx, dword [ebp - 0x88]
cmp dword [eax + ebx*4], edx
je 0x40ab0c
or dword [ebp - 0xe4], 4
and edi, 0xffdfffff
mov dword [ebp - 0x70], edx
jmp 0x40ab0c
xor ebx, ebx
cmp dword [ebp - 0x94], 0
jmp 0x40b327
inc ebx
cmp dword [ebp - 0x94], ebx
jle 0x40aa2c
mov ecx, dword [ebp - 0xec]
cmp byte [ecx + ebx], 0x23
jne 0x40b320
mov byte [ecx + ebx], 0x1e
jmp 0x40b320
mov ebx, dword [ebp - 0xb0]
mov byte [esi + ebx - 1], 0
jmp 0x40ad80
xor ecx, ecx
mov edx, dword [ebp - 0x94]
mov dword [esp + 0x18], ecx
movzx eax, word [ebx + 0xa]
mov dword [esp + 0x14], eax
movzx eax, word [ebx + 8]
imul eax, edx
mov edx, dword [ebp - 0xd8]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xe0]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x7c]
mov dword [esp], eax
call fcn.0041e8db
jmp 0x40ab74
mov edx, dword [ebp - 0xdc]
mov edi, dword [ebp - 0x94]
mov ecx, dword [ebp - 0xd8]
inc edx
mov dword [esp + 0x18], edx
movzx eax, word [ebx + 8]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ecx
imul eax, edi
mov dword [ebp - 0x94], eax
lea eax, [eax + ecx - 1]
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x40]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x7c]
mov dword [esp], eax
call fcn.0041f0cb
jmp 0x40abbd
mov ecx, dword [ebp + 8]
movzx ecx, word [ecx + 0xe]
mov word [ebp - 0xee], cx
jmp 0x40a727
mov byte [ebp - 0x7b], 1
jmp 0x40a727
mov byte [ebp - 0x7d], 1
mov eax, dword [eax + 4]
and edi, 0xfffbffff
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x7c]
mov dword [esp], eax
call fcn.0042057c
movzx eax, byte [ebx + 0xc]
and al, 2
mov byte [ebp - 0xe6], al
jmp 0x40ab4a
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0xd0]
jmp 0x40aa88
and ecx, 0x30fffe00
cmp ebx, ecx
jmp 0x40b106
mov ebx, edi
and ebx, 0x30fffe00
jmp 0x40b0e6
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x50]
test eax, eax
je 0x40ae73
mov edx, dword [ebp + 8]
lea eax, [esi + 1]
movsx esi, ax
movzx eax, word [edx + 0xe]
cmp esi, eax
jge 0x40b578
mov ecx, dword [ebp - 0xb4]
mov ebx, dword [ebp - 0xb0]
movzx eax, byte [esi + ecx]
mov byte [esi + ebx], al
mov eax, dword [ebp - 0xac]
mov edx, dword [ebp - 0xa8]
mov ebx, dword [ebp - 0xec]
mov ecx, dword [eax + esi*4]
mov dword [edx + esi*4], ecx
mov edx, dword [ebp - 0x94]
mov ecx, dword [ebp - 0xb4]
lea eax, [edx + 1]
cwde
mov dword [ebp - 0x94], eax
movzx eax, byte [esi + ecx]
mov byte [edx + ebx], al
lea eax, [esi + 1]
movsx esi, ax
cmp byte [ebp - 0xe7], 0
jne 0x40b578
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0xe]
cmp esi, eax
je 0x40b578
mov ecx, dword [ebp - 0xac]
cmp dword [ecx + esi*4], edi
jne 0x40b578
mov ebx, dword [ebp - 0xb4]
mov eax, dword [ebp - 0xb0]
movzx edx, byte [esi + ebx]
cmp dl, byte [esi + eax]
je 0x40b5c2
mov eax, dword [ebp - 0xb8]
mov ebx, dword [ebp - 0x94]
cmp ebx, dword [eax + 0x78]
je 0x40b578
mov ecx, dword [ebp - 0xb0]
mov byte [esi + ecx], dl
mov ebx, dword [ebp - 0xac]
mov eax, dword [ebp - 0xa8]
mov edx, dword [ebp - 0x94]
mov ecx, dword [ebx + esi*4]
mov ebx, dword [ebp - 0xec]
mov dword [eax + esi*4], ecx
mov ecx, dword [ebp - 0xb4]
lea eax, [edx + 1]
cwde
mov dword [ebp - 0x94], eax
movzx eax, byte [esi + ecx]
mov byte [edx + ebx], al
lea eax, [esi + 1]
mov edx, dword [ebp + 8]
movsx esi, ax
movzx eax, word [edx + 0xe]
cmp esi, eax
jl 0x40b486
lea eax, [esi - 1]
jmp 0x40ae8e
mov eax, dword [ebp + 8]
cmp word [eax + 0x12], 0
jne 0x40b942
movzx ecx, word [eax + 0x10]
mov esi, dword [ebp + 8]
movzx eax, cx
mov ebx, dword [esi + 0x118]
movzx edx, word [esi + 0x20]
add edx, ebx
cmp edx, eax
jl 0x40b861
mov eax, dword [ebp - 0xb8]
mov edx, 0xffffffff
mov dword [eax + 0x2cc], edx
jmp 0x40a67d
mov ecx, dword [ebp - 0xa8]
cmp edi, dword [ecx + esi*4]
jne 0x40b514
movzx eax, byte [esi + eax + 1]
mov ecx, dword [ebp - 0xb4]
cmp byte [esi + ecx + 1], al
jne 0x40b514
lea eax, [esi - 1]
jmp 0x40ae8e
mov edx, dword [ebp + 8]
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [edx + 0x7c]
mov dword [esp], eax
call fcn.00420b4d
jmp 0x40acaa
movzx eax, byte [eax]
xor edx, edx
shr al, 6
test ebx, ebx
setne dl
test edx, eax
je 0x40a691
mov eax, ebx
movzx esi, cx
cdq
mov eax, edx
xor eax, ebx
sub eax, edx
cmp eax, esi
setl dl
xor eax, eax
cmp byte [ebp - 0x7c], 0
sete al
test eax, edx
je 0x40a691
mov dword [ebp - 0xc8], esi
mov eax, 0xffffffff
mov dword [ebp - 0x94], eax
mov eax, 0xffffffff
mov dword [ebp - 0x98], eax
xor eax, eax
test ebx, ebx
mov dword [ebp - 0x8c], eax
lea eax, [esi - 1]
jle 0x40bc7a
mov dword [ebp - 0xc8], eax
mov ecx, dword [ebp - 0x8c]
add ecx, ebx
js 0x40ba24
mov esi, dword [ebp + 8]
movzx eax, word [esi + 0x10]
cmp ecx, eax
jge 0x40ba24
cmp ecx, dword [ebp - 0x90]
je 0x40ba24
mov eax, dword [ebp - 0x9c]
mov edx, dword [ebp - 0x8c]
add edx, eax
mov eax, dword [esi + 0x10c]
mov eax, dword [eax + edx*4]
mov dword [ebp - 0xb4], eax
mov eax, dword [esi + 0x114]
mov edx, dword [eax + edx*4]
mov eax, dword [esi + 0xf8]
mov dword [ebp - 0xac], edx
mov edx, dword [ebp - 0x8c]
mov edi, dword [eax + ecx*4]
mov edx, dword [eax + edx*4]
mov eax, dword [esi + 0xfc]
mov esi, dword [ebp - 0x8c]
mov dword [ebp - 0xb0], edx
mov ecx, dword [eax + ecx*4]
mov esi, dword [eax + esi*4]
xor eax, eax
mov dword [ebp - 0xc4], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0xa8], esi
mov dword [ebp - 0xcc], ecx
movzx eax, word [eax + 0xe]
movsx esi, ax
mov word [ebp - 0xee], ax
lea eax, [esi - 1]
movsx esi, ax
inc ax
je 0x40ba24
lea edx, [esi - 1]
jmp 0x40b745
mov eax, dword [ebp - 0xc4]
dec eax
cwde
mov dword [ebp - 0xc4], eax
mov eax, edx
dec edx
inc ax
je 0x40bb8a
mov ecx, dword [ebp - 0xb4]
movzx eax, byte [edx + ecx + 1]
cmp al, byte [edx + edi + 1]
jne 0x40b72c
mov esi, dword [ebp - 0xac]
mov ecx, dword [esi + edx*4 + 4]
mov esi, dword [ebp - 0xcc]
cmp ecx, dword [esi + edx*4 + 4]
jne 0x40b72c
mov esi, dword [ebp - 0xb0]
cmp al, byte [edx + esi + 1]
je 0x40bc65
mov eax, dword [ebp - 0xc4]
inc eax
jmp 0x40b733
mov esi, dword [ebp - 0xb8]
mov esi, dword [esi + 0x2cc]
test esi, esi
js 0x40ac6c
mov eax, dword [ebp + 8]
xor esi, esi
cmp dword [eax + 0xdc], 2
jg 0x40b992
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 8]
movzx ebx, word [eax + 0xa]
movzx edx, word [ecx + 0x1a]
movzx eax, bx
sub eax, edx
dec eax
mov dword [esp + 0x18], eax
movzx edx, word [ecx + 8]
cmp byte [ebp - 0x80], 0
movzx eax, dx
lea ecx, [eax + eax - 1]
jne 0x40b7d7
lea ecx, [eax - 1]
mov dword [esp + 0x14], ecx
movzx eax, bx
mov ebx, dword [ebp - 0xb8]
movzx edx, dx
mov ecx, dword [ebx + 0x2cc]
mov ebx, dword [ebp + 8]
imul eax, ecx
movzx ecx, word [ebx + 0x16]
mov ebx, dword [ebp - 0xb8]
add eax, ecx
mov dword [esp + 0x10], eax
mov edi, dword [ebx + 0x2d0]
movsx eax, byte [ebp - 0x80]
add eax, edi
imul eax, edx
mov edx, dword [ebp + 8]
add eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [edx + 0x40]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [edx + 0x7c]
mov dword [esp], eax
call fcn.0041f20f
test esi, esi
je 0x40ac6c
mov dword [esp + 8], esi
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x78]
mov dword [esp + 0xc], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call fcn.0041e734
jmp 0x40ac6c
mov esi, dword [ebp + 8]
mov ebx, dword [ebp - 0xb8]
mov eax, dword [esi + 0x11c]
mov dword [ebx + 0x2cc], edx
mov dword [ebx + 0x2d0], eax
movsx eax, byte [ebp - 0x80]
mov dword [ebx + 0x36c], eax
jmp 0x40a67d
mov edx, dword [ebp - 0xb8]
mov eax, dword [edx + 0x2d0]
cmp dword [esi + 0x11c], eax
jne 0x40a626
mov edx, dword [ebp + 8]
movzx ecx, word [edx + 0x10]
jmp 0x40a67d
mov byte [ebp - 0x7e], 1
mov eax, dword [eax + 4]
mov ebx, 0x41f073
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call fcn.0042057c
mov dword [ebp - 0xc0], ebx
mov edx, dword [ebp + 8]
movzx eax, byte [edx + 0xc]
and al, 4
mov byte [ebp - 0xe6], al
mov eax, 0x41f309
mov dword [ebp - 0xbc], eax
mov eax, dword [edx + 0x50]
jmp 0x40b469
mov eax, dword [ebx + 0xfc]
mov esi, dword [ebp - 0x90]
mov ebx, dword [eax + esi*4]
xor dword [ebx + edx*4], 0x300000
mov edx, dword [ebp - 0xb8]
mov eax, dword [edx + 0x36c]
test eax, eax
je 0x40a650
mov esi, dword [edx + 0x2d0]
add eax, esi
movsx esi, ax
cmp esi, edi
jge 0x40a650
xor dword [ebx + esi*4], 0x300000
jmp 0x40a650
mov ebx, dword [ebp + 8]
movzx ecx, word [ebx + 0x10]
jmp 0x40a67d
movsx eax, byte [ebp - 0x80]
mov edi, dword [ebp - 0xa4]
lea ecx, [ecx + eax*4]
mov dword [ebp - 0xac], ecx
mov edx, dword [ecx]
xor edx, 0x100000
and edx, 0xfffc0000
or edx, edi
mov dword [ecx], edx
jmp 0x40ac6c
mov edx, dword [ebp - 0xb8]
mov ebx, 0x102
test byte [edx + 0x34], 4
jne 0x40a550
jmp 0x40a54e
mov edx, dword [ebp - 0xb8]
test byte [edx + 0x34], 4
je 0x40b7ab
mov ecx, eax
mov eax, dword [eax + 0xd0]
mov ebx, 4
mov esi, 4
mov eax, dword [eax + 0x408]
mov dword [esp + 8], ebx
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x78]
mov dword [esp + 0xc], eax
mov eax, dword [ecx + 0x40]
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x7c]
mov dword [esp], eax
call fcn.0041e734
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0xd0]
mov eax, dword [eax]
mov dword [ebp - 0x70], eax
jmp 0x40b7ab
mov esi, 1
jmp 0x40a56e
mov edx, dword [ebp - 0x98]
mov ecx, dword [ebp - 0xec]
mov ebx, dword [ebp - 0xdc]
mov dword [esp + 0x18], edx
mov eax, dword [ebp - 0xd8]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], eax
jmp 0x40b037
cmp word [ebp - 0x94], 0xffff
je 0x40bada
mov eax, dword [ebp - 0x94]
cmp word [ebp - 0x98], ax
jge 0x40ba5a
mov eax, dword [ebp - 0x98]
mov edx, dword [ebp - 0x94]
cwde
mov dword [ebp - 0x98], edx
mov dword [ebp - 0x94], eax
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x94]
mov edi, dword [ebp - 0x94]
movzx ecx, word [esi + 0xa]
movzx edx, word [esi + 0x16]
imul eax, ecx
add eax, edx
mov dword [esp + 0x24], eax
xor eax, eax
mov dword [esp + 0x20], eax
mov eax, dword [ebp - 0x98]
sub eax, edi
inc eax
imul eax, ecx
mov dword [esp + 0x1c], eax
movzx eax, word [esi + 4]
lea eax, [eax + edx*2]
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0x94]
add eax, ebx
imul eax, ecx
add eax, edx
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x40]
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x3c]
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov eax, dword [esi + 0x7c]
mov dword [esp], eax
call fcn.0041ea78
mov eax, 0xffffffff
mov dword [ebp - 0x94], eax
test ebx, ebx
jle 0x40bc1d
mov eax, dword [ebp - 0x8c]
inc eax
cwde
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0xc8]
dec dword [ebp - 0xc8]
test eax, eax
jns 0x40b675
mov eax, dword [ebp + 8]
movzx ecx, word [eax + 0x10]
jmp 0x40a691
xor eax, eax
movzx edx, dx
mov dword [esp + 0x18], eax
movzx eax, word [esi + 6]
mov dword [esp + 0x10], edx
lea eax, [eax + edx*2]
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0xc], eax
movzx eax, word [esi + 4]
add eax, edx
mov dword [esp + 8], eax
mov eax, dword [esi + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x7c]
mov dword [esp], eax
call fcn.0041e8db
jmp 0x40aca0
xor eax, eax
movzx edx, dx
mov dword [esp + 0x18], eax
movzx eax, word [ebx + 6]
mov dword [esp + 0x10], edx
lea eax, [eax + edx*2]
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0xc], eax
xor eax, eax
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x7c]
mov dword [esp], eax
call fcn.0041e8db
jmp 0x40ac8a
cmp word [ebp - 0xc4], 8
jle 0x40ba24
movsx esi, word [ebp - 0xee]
jmp 0x40bbd6
movzx eax, byte [edi]
inc edi
mov edx, dword [ebp - 0xb0]
mov byte [edx], al
mov ecx, dword [ebp - 0xcc]
inc edx
mov dword [ebp - 0xb0], edx
mov edx, dword [ebp - 0xa8]
mov eax, dword [ecx]
add ecx, 4
mov dword [ebp - 0xcc], ecx
mov dword [edx], eax
add edx, 4
mov dword [ebp - 0xa8], edx
lea eax, [esi - 1]
movsx esi, ax
inc ax
jne 0x40bba1
cmp word [ebp - 0x94], 0xffff
je 0x40bc88
mov esi, dword [ebp - 0x8c]
mov dword [ebp - 0x98], esi
jmp 0x40bada
mov dword [esp], ecx
mov ebx, dword [ebp - 0x94]
mov eax, dword [ebp - 0xb8]
mov dword [esp + 4], ebx
call dword [eax + 0x370]
jmp 0x40aea0
mov eax, dword [ebp - 0x8c]
dec eax
jmp 0x40bae9
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0xe]
sub eax, 2
cmp dword [edx + 0x11c], eax
jge 0x40a5fd
add ecx, 4
mov edx, dword [ecx]
mov dword [ebp - 0xac], ecx
mov eax, edx
and eax, 0x30000000
cmp eax, 0x30000000
jne 0x40a5fd
mov byte [ebp - 0x80], 1
jmp 0x40a5ce
mov eax, dword [ebp - 0xa8]
cmp ecx, dword [eax + edx*4 + 4]
jne 0x40b77c
jmp 0x40b73a
movsx edx, ax
mov dword [ebp - 0x8c], edx
jmp 0x40b66f
mov ecx, dword [ebp - 0x8c]
mov dword [ebp - 0x94], ecx
jmp 0x40bbee