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

Disassembly:
sub esp, 0x2fc
push ebx
mov ebx, dword [esp + 0x308]
cmp word [ebx], 0x40
push ebp
push esi
mov esi, dword [esp + 0x30c]
mov ebp, dword [esi + 0xc]
mov dword [esp + 0x4c], 0
jbe 0x437723
push 0x40
push str.at_most__d_tables_in_a_join
call fcn.0041e420
add esp, 8
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x2fc
ret
mov edx, dword [esp + 0x314]
push edi
xor eax, eax
mov ecx, 0x41
lea edi, [esp + 0x208]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x208]
push 0x3d
mov dword [esp + 0x68], eax
push edx
lea eax, [esp + 0x68]
lea ecx, [esp + 0x80]
push eax
mov dword [esp + 0x6c], esi
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0xa
mov dword [esp + 0x7c], ecx
call fcn.0041dbd0
movsx eax, word [ebx]
imul eax, eax, 0x4c
add esp, 0xc
add eax, 0x68
call fcn.00418290
mov edi, eax
mov eax, dword [0x4696e8]
test eax, eax
mov dword [esp + 0x5c], edi
je 0x4377ad
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4377ad
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x437882
movsx ecx, word [ebx]
mov eax, ebp
mov dword [edi + 0x14], ecx
mov dword [edi], esi
mov dword [edi + 4], ebx
call fcn.0041fa10
mov dword [edi + 0x10], eax
mov eax, dword [esp + 0x318]
test eax, eax
je 0x43780d
cmp word [ebx], 0
je 0x4377f6
lea edx, [esp + 0x10]
push edx
push 0x412ff0
push eax
mov dword [esp + 0x1c], 3
call fcn.00417750
mov eax, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
je 0x43780d
mov ecx, dword [edi + 0x10]
mov edx, dword [esp + 0x318]
push 1
push ecx
push edx
push esi
call fcn.00433b80
add esp, 0x10
movsx ecx, word [ebx]
test ecx, ecx
jle 0x437845
lea eax, [ebx + 0x20]
jmp 0x437820
mov edx, dword [eax]
mov esi, dword [esp + 0x208]
mov dword [esp + esi*4 + 0x20c], edx
mov edx, dword [esp + 0x208]
inc edx
add eax, 0x30
dec ecx
mov dword [esp + 0x208], edx
jne 0x437820
mov esi, dword [esp + 0x68]
dec esi
js 0x437862
lea esp, [esp]
push esi
lea eax, [esp + 0x64]
push eax
push ebx
call fcn.0042cad0
add esp, 0xc
dec esi
jns 0x437850
mov eax, dword [0x4696e8]
test eax, eax
je 0x4378a2
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4378a2
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
jne 0x4378a2
lea ecx, [esp + 0x60]
push ecx
call fcn.0041dad0
push edi
call fcn.004181e0
add esp, 8
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x2fc
ret
or eax, 0xffffffff
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], eax
movsx eax, word [ebx]
xor ecx, ecx
add edi, 0x1c
cmp eax, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x14], edi
jle 0x437ba6
lea ecx, [ecx]
mov ebx, dword [esp + 0x2c]
fld qword [0x4611d8]
xor ecx, ecx
fstp qword [esp + 0x54]
lea edx, [ebx + ebx*2]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x314]
shl edx, 4
cmp ebx, eax
lea edi, [edx + ecx + 8]
jge 0x437ac9
mov eax, dword [esp + 0x5c]
mov edx, ebx
imul edx, edx, 0x4c
lea esi, [edx + eax + 0x64]
lea ebx, [ebx]
mov al, byte [edi + 0x15]
mov ecx, dword [esp + 0x10]
and al, 0xa
neg al
sbb eax, eax
neg eax
test ecx, ecx
mov dword [esp + 0x38], eax
je 0x43793f
test eax, eax
jne 0x437ac9
mov edx, dword [esp + 0x208]
xor ecx, ecx
test edx, edx
jle 0x43795e
mov eax, dword [edi + 0x18]
nop
cmp dword [esp + ecx*4 + 0x20c], eax
je 0x437984
inc ecx
cmp ecx, edx
jl 0x437950
xor eax, eax
xor edx, edx
and eax, dword [esp + 0x40]
and edx, dword [esp + 0x44]
or eax, edx
jne 0x437992
mov eax, dword [esp + 0x2c]
cmp ebx, eax
jne 0x437ab0
inc eax
mov dword [esp + 0x2c], eax
jmp 0x437ab0
mov eax, 1
xor edx, edx
call fcn.00458e20
jmp 0x437962
mov ecx, dword [edi + 0xc]
mov al, byte [ecx + 0x39]
test al, al
je 0x437a1f
mov eax, dword [esp + 0x31c]
test eax, eax
je 0x4379af
mov eax, dword [eax]
jmp 0x4379b1
xor eax, eax
mov ecx, dword [esp + 0x4c]
xor edx, edx
test ecx, ecx
mov ecx, dword [esp + 0x40]
sete dl
push esi
push edx
push eax
mov eax, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x320]
push ecx
push edi
lea edx, [esp + 0x78]
push edx
push eax
call fcn.00426210
mov ecx, dword [esi]
add esp, 0x20
test ecx, ecx
mov dword [esp + 0x20], 0x800000
je 0x4379fc
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x4379fc
mov dword [esp + 0x20], 0x900000
fld qword [0x460c60]
xor eax, eax
fcomp st(1)
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], eax
fnstsw ax
test ah, 5
jp 0x437a6a
fstp st(0)
fld qword [0x460c60]
jmp 0x437a6a
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x437a36
mov eax, dword [esp + 0x31c]
test eax, eax
je 0x437a36
mov eax, dword [eax]
jmp 0x437a38
xor eax, eax
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x24]
push edx
mov edx, dword [esp + 0x4c]
lea ecx, [esp + 0x2c]
push ecx
push eax
mov eax, dword [esp + 0x50]
push edx
mov edx, dword [esp + 0x324]
push eax
push edi
lea ecx, [esp + 0x7c]
push ecx
push edx
call fcn.0042d790
add esp, 0x24
xor ecx, ecx
fcom qword [esp + 0x54]
fnstsw ax
test ah, 5
jp 0x437aa6
mov eax, dword [esp + 0x24]
fstp qword [esp + 0x54]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x10], 1
mov dword [esp + 0x34], eax
mov dword [esp + 0x48], ebx
mov dword [edx + 0x44], ecx
jmp 0x437aa8
fstp st(0)
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x437ac9
mov eax, dword [esp + 0x314]
movsx ecx, word [eax]
inc ebx
add esi, 0x4c
add edi, 0x30
cmp ebx, ecx
jl 0x437920
mov ecx, dword [esp + 0x18]
test ecx, 0x100000
je 0x437ae2
mov edx, dword [esp + 0x31c]
mov dword [edx], 0
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
and edi, ecx
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x3c]
mov dword [eax + 0x38], edx
xor edx, edx
cmp ecx, edx
mov dword [esp + 0x28], edi
mov dword [eax + 0x10], ecx
mov dword [eax + 0x40], edx
mov dword [eax + 0x3c], edx
je 0x437b1f
mov ecx, dword [esp + 0x310]
mov edx, dword [ecx + 0x1c]
mov dword [eax + 0x18], edx
inc dword [ecx + 0x1c]
jmp 0x437b26
mov dword [eax + 0x18], 0xffffffff
mov edx, dword [esp + 0x208]
mov esi, dword [esp + 0x48]
xor ecx, ecx
test edx, edx
jle 0x437b62
mov edi, dword [esp + 0x314]
lea eax, [esi + esi*2]
shl eax, 4
mov eax, dword [eax + edi + 0x20]
jmp 0x437b50
cmp dword [esp + ecx*4 + 0x20c], eax
je 0x437ca0
inc ecx
cmp ecx, edx
jl 0x437b50
xor eax, eax
xor edx, edx
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
not eax
and ecx, eax
mov eax, dword [esp + 0x14]
not edx
and ebx, edx
mov edx, dword [esp + 0x314]
mov dword [eax], esi
add eax, 0x4c
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x14], eax
movsx eax, word [edx]
inc ecx
cmp ecx, eax
mov dword [esp + 0x44], ebx
mov dword [esp + 0x4c], ecx
jl 0x4378d0
test dword [esp + 0x28], 0x400000
je 0x437bc1
mov eax, dword [esp + 0x31c]
test eax, eax
je 0x437bc1
mov dword [eax], 0
mov edi, dword [esp + 0x310]
mov esi, dword [edi + 0xc]
test esi, esi
jne 0x437bdf
mov ebx, dword [edi]
call fcn.0041aee0
mov esi, eax
test esi, esi
mov dword [edi + 0xc], eax
je 0x437bf8
mov eax, dword [edi + 0x34]
test eax, eax
jne 0x437bf8
push 0
push 0
push 0x60
call fcn.0041f960
add esp, 0xc
inc eax
mov dword [edi + 0x34], eax
mov esi, dword [esp + 0x5c]
lea eax, [esi + 0x1c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x314]
cmp word [eax], 0
mov dword [esp + 0x4c], 0
jle 0x438383
lea esp, [esp]
mov edx, dword [esp + 0x310]
mov ebx, dword [esp + 0x14]
cmp byte [edx + 0x80], 2
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x30], ecx
jne 0x437f52
mov eax, dword [ebx]
mov ecx, dword [esp + 0x314]
lea eax, [eax + eax*2]
shl eax, 4
mov edx, dword [eax + ecx + 0xc]
lea esi, [eax + ecx + 8]
push edx
push str.TABLE__s
call fcn.0041df10
mov esi, dword [esi + 8]
add esp, 8
test esi, esi
mov edi, eax
mov dword [esp + 0x18], edi
je 0x437c86
push esi
push edi
push str._z_AS__s
call fcn.0041df10
mov edi, eax
add esp, 0xc
mov dword [esp + 0x18], edi
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x437cb1
mov eax, dword [eax]
push eax
push edi
push str._z_WITH_INDEX__s
call fcn.0041df10
add esp, 0xc
jmp 0x437ce6
mov eax, 1
xor edx, edx
call fcn.00458e20
jmp 0x437b66
mov eax, dword [ebx + 4]
test ah, 3
je 0x437cc9
push edi
push str._z_USING_PRIMARY_KEY
call fcn.0041df10
add esp, 8
jmp 0x437ce6
mov eax, dword [ebx + 0x44]
test eax, eax
je 0x437cec
mov ecx, dword [eax + 0x18]
mov edx, dword [eax + 0x14]
push ecx
push edx
push edi
push str._z_VIRTUAL_TABLE_INDEX__d:_s
call fcn.0041df10
add esp, 0x10
mov edi, eax
mov dword [esp + 0x18], edi
test dword [ebx + 4], 0x100000
je 0x437d09
push edi
push str._z_ORDER_BY
call fcn.0041df10
mov edi, eax
add esp, 8
mov dword [esp + 0x18], edi
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
cmp edx, ecx
mov eax, dword [ebx]
mov dword [esp + 0x38], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], edx
jg 0x437eb0
mov edi, dword [ebp + 0x4c]
xor eax, eax
inc ecx
cmp edi, 0xbdf20da3
sete al
test eax, eax
jne 0x437d40
cmp edx, ecx
jge 0x437e80
xor ebx, ebx
mov edi, dword [ebp + 0x14]
test eax, eax
mov eax, dword [0x4696e8]
sete bl
imul ebx, ebx, 0x64
add ebx, ecx
lea esi, [ebx + ebx*4]
shl esi, 2
test eax, eax
je 0x437d79
mov eax, dword [0x4696f0]
test eax, eax
jle 0x437d79
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x437e80
test edi, edi
jne 0x437e0e
test esi, esi
jle 0x437e0a
mov eax, dword [0x4696e8]
test eax, eax
je 0x437da9
mov eax, dword [0x4696f0]
test eax, eax
jle 0x437da9
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x437e0a
push esi
call dword [sym.imp.MSVCR71.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x10], edi
jne 0x437df0
mov eax, dword [0x4696e8]
test eax, eax
je 0x437ddd
mov eax, dword [0x4696f0]
test eax, eax
jle 0x437ddd
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x437e0a
call fcn.00410f50
mov dword [0x4696e8], 1
mov esi, edi
jmp 0x437e4e
mov edi, dword [esp + 0x10]
mov ecx, esi
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x10]
mov esi, edi
jmp 0x437e4e
push esi
push edi
call dword [sym.imp.MSVCR71.dll_realloc]
mov esi, eax
add esp, 8
test esi, esi
jne 0x437e52
mov eax, dword [0x4696e8]
test eax, eax
je 0x437e3f
mov eax, dword [0x4696f0]
test eax, eax
jle 0x437e3f
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x437e4e
call fcn.00410f50
mov dword [0x4696e8], 1
test esi, esi
je 0x437e80
mov eax, dword [esp + 0x1c]
cmp ebx, eax
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x14], esi
jle 0x437e80
mov edx, eax
sub ebx, edx
lea ecx, [ebx + ebx*4]
shl ecx, 2
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4696e8]
test eax, eax
je 0x437ea8
mov eax, dword [0x4696f0]
test eax, eax
jle 0x437ea8
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
mov edi, dword [esp + 0x18]
jne 0x437eac
xor esi, esi
jmp 0x437ee1
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
inc eax
mov dword [ebp + 0xc], eax
lea eax, [ecx + ecx*4]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x4c]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x38]
mov dword [eax + 8], edx
xor edx, edx
mov byte [eax], 0x77
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], edx
mov byte [ebp + 0x234], dl
mov esi, ecx
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x437f48
mov eax, dword [0x4696e8]
test eax, eax
je 0x437f08
mov eax, dword [0x4696f0]
test eax, eax
jle 0x437f08
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x437f48
test esi, esi
jl 0x437f11
cmp esi, dword [ebp + 0xc]
jl 0x437f17
mov esi, dword [ebp + 0xc]
dec esi
js 0x437f52
mov ecx, dword [ebp + 0x14]
lea eax, [esi + esi*4]
lea esi, [ecx + eax*4]
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
call fcn.0041af60
xor eax, eax
cmp edi, eax
mov dword [esi + 0xc], eax
jne 0x437f3c
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
jmp 0x437f52
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], 0xffffffff
jmp 0x437f52
mov ecx, edi
or eax, 0xffffffff
call fcn.0041af60
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
mov ecx, dword [esp + 0x314]
mov edx, dword [esp + 0x310]
mov ebx, dword [edx]
lea eax, [eax + eax*2]
shl eax, 4
mov edi, dword [eax + ecx + 0x14]
lea eax, [eax + ecx + 8]
mov ecx, dword [edi + 0x4c]
test ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], 0xfff0bdc0
je 0x437fb0
mov esi, dword [ebx]
xor edx, edx
test esi, esi
mov dword [esp + 0x18], edx
jle 0x437fb0
mov eax, dword [ebx + 4]
add eax, 0x14
jmp 0x437fa0
cmp dword [eax], ecx
je 0x437fac
inc edx
add eax, 0x18
cmp edx, esi
jl 0x437fa0
mov dword [esp + 0x18], edx
mov al, byte [edi + 0x35]
test al, al
jne 0x438359
mov eax, dword [edi + 0x18]
test eax, eax
jne 0x438359
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x438072
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x18]
mov edi, dword [edi + 0x40]
xor ebx, ebx
push ebx
push eax
push 0x1e
mov esi, ebp
call fcn.0041f960
add esp, 0xc
cmp ebp, ebx
mov esi, eax
je 0x438061
cmp dword [ebp + 0x14], ebx
je 0x438061
cmp dword [0x4696e8], ebx
je 0x438018
cmp dword [0x4696f0], ebx
jle 0x438018
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438061
cmp esi, ebx
jl 0x438021
cmp esi, dword [ebp + 0xc]
jl 0x43802b
mov esi, dword [ebp + 0xc]
dec esi
js 0x43815f
mov edx, dword [ebp + 0x14]
lea ecx, [esi + esi*4]
mov eax, dword [edx + ecx*4 + 0x10]
lea esi, [edx + ecx*4]
mov ecx, dword [esi + 0xc]
call fcn.0041af60
cmp edi, ebx
mov dword [esi + 0xc], ebx
jne 0x438052
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], ebx
jmp 0x43815f
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], 0xfffffff6
jmp 0x43815f
mov ecx, edi
mov eax, 0xfffffff6
call fcn.0041af60
jmp 0x43815f
test dword [eax + 4], 0x80000
jne 0x438143
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x18]
mov al, byte [edi + 0x39]
test al, al
mov dword [esp + 0x38], ecx
jne 0x438100
mov edx, dword [esp + 0x310]
mov eax, dword [edx + 0xc]
test eax, eax
mov dword [esp + 0x10], eax
jne 0x4380b6
call fcn.0041aee0
mov ecx, dword [esp + 0x310]
mov dword [ecx + 0xc], eax
mov dword [esp + 0x10], eax
mov edx, dword [edi]
mov eax, dword [esp + 0x18]
mov ebx, dword [edi + 0x14]
mov esi, dword [esp + 0x310]
push edx
push 0
push eax
call fcn.00421400
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
push 0
push ecx
push 0x30
call fcn.0041f960
mov edx, dword [edi + 0x14]
mov ebx, dword [esp + 0x50]
push edx
push ebx
push 0xe
call fcn.0041f960
mov eax, dword [edi + 4]
push eax
push ebx
push 0x69
call fcn.0041f960
add esp, 0x30
cmp dword [edi + 4], 0x40
jae 0x43815f
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov esi, eax
xor edx, edx
or esi, ecx
je 0x438125
shrd eax, ecx, 1
shr ecx, 1
mov esi, eax
inc edx
or esi, ecx
jne 0x438118
mov ecx, dword [ebp + 0xc]
lea eax, [ecx - 1]
test eax, eax
jl 0x43815f
cmp ecx, eax
jle 0x43815f
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x43815f
lea eax, [eax + eax*4]
mov dword [ecx + eax*4 + 8], edx
jmp 0x43815f
mov ecx, dword [edi]
mov edx, dword [esp + 0x18]
mov ebx, dword [edi + 0x14]
mov esi, dword [esp + 0x310]
push ecx
push 0
push edx
call fcn.00421400
add esp, 0xc
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 0x14]
mov dword [eax + 0x14], ecx
mov eax, dword [eax + 0x10]
test eax, eax
mov dword [esp + 0x20], eax
je 0x4382d1
mov edx, eax
mov eax, dword [esp + 0x310]
push edx
push eax
call fcn.0042ae20
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x10]
add esp, 8
cmp eax, esi
jg 0x4381c7
lea eax, [esi + 1]
mov ebx, ebp
call fcn.0041f8f0
mov eax, dword [0x4696e8]
test eax, eax
je 0x4381c7
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4381c7
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x4381f2
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
inc eax
mov dword [ebp + 0xc], eax
lea ecx, [esi + esi*4]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x18]
mov dword [eax + 4], ecx
xor ecx, ecx
mov byte [eax], 0x30
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [ebp + 0x234], cl
mov esi, dword [ebp + 0xc]
cmp dword [ebp + 0x10], esi
mov edx, dword [esp + 0x20]
mov edi, dword [edx + 0x14]
jg 0x43822f
lea eax, [esi + 1]
mov ebx, ebp
call fcn.0041f8f0
mov eax, dword [0x4696e8]
test eax, eax
je 0x43822f
mov eax, dword [0x4696f0]
test eax, eax
jle 0x43822f
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
jne 0x43822f
xor esi, esi
jmp 0x43825a
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x30]
inc eax
mov dword [ebp + 0xc], eax
lea eax, [esi + esi*4]
lea eax, [ecx + eax*4]
xor ecx, ecx
mov byte [eax], 0xe
mov dword [eax + 4], edx
mov dword [eax + 8], edi
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [ebp + 0x234], cl
mov eax, dword [ebp + 0x14]
xor edi, edi
cmp eax, edi
je 0x4382c3
cmp dword [0x4696e8], edi
je 0x438281
cmp dword [0x4696f0], edi
jle 0x438281
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x4382c3
cmp esi, edi
jl 0x43828a
cmp esi, dword [ebp + 0xc]
jl 0x438290
mov esi, dword [ebp + 0xc]
dec esi
js 0x4382d1
mov ecx, dword [ebp + 0x14]
lea eax, [esi + esi*4]
lea esi, [ecx + eax*4]
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
call fcn.0041af60
mov eax, dword [esp + 0x10]
cmp eax, edi
mov dword [esi + 0xc], edi
jne 0x4382b7
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], edi
jmp 0x4382d1
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], 0xfffffffa
jmp 0x4382d1
mov ecx, dword [esp + 0x10]
mov eax, 0xfffffff7
call fcn.0041af60
mov edx, dword [esp + 0x14]
test dword [edx + 4], 0x82000
je 0x438345
mov eax, dword [esp + 0x20]
mov edi, dword [eax + 4]
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
inc edi
cmp eax, esi
jg 0x43831a
lea eax, [esi + 1]
mov ebx, ebp
call fcn.0041f8f0
mov eax, dword [0x4696e8]
test eax, eax
je 0x43831a
mov eax, dword [0x4696f0]
test eax, eax
jle 0x43831a
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438345
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
inc eax
mov dword [ebp + 0xc], eax
lea ecx, [esi + esi*4]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [eax + 4], ecx
xor ecx, ecx
mov byte [eax], 0x69
mov dword [eax + 8], edi
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [ebp + 0x234], cl
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x310]
push edx
call fcn.00435e40
add esp, 4
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x314]
mov eax, dword [esp + 0x4c]
add edx, 0x4c
mov dword [esp + 0x14], edx
movsx edx, word [ecx]
inc eax
cmp eax, edx
mov dword [esp + 0x4c], eax
jl 0x437c20
mov esi, dword [esp + 0x5c]
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x314]
mov dword [esi + 8], eax
or eax, 0xffffffff
cmp word [ecx], 0
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
lea eax, [esi + 0x1c]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x14], eax
jle 0x439b2f
mov ebx, eax
mov eax, dword [ebx]
mov esi, dword [ebp + 0x18]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x314]
shl edx, 4
mov ecx, dword [edx + eax + 0x20]
lea eax, [edx + eax + 8]
mov edx, dword [ebx + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x3c], eax
mov eax, dword [ebx + 4]
mov dword [esp + 0x34], ecx
mov ecx, eax
shr eax, 0x13
shr ecx, 0x15
and eax, 1
and ecx, 1
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x1c]
cmp esi, eax
mov dword [esp + 0x18], ecx
lea ecx, [esi + 1]
mov dword [esp + 0x2c], edx
mov dword [ebp + 0x18], ecx
jl 0x438544
mov edx, dword [ebp + 0x20]
lea eax, [eax + eax + 0xa]
mov dword [ebp + 0x1c], eax
lea edi, [eax*4]
mov eax, dword [0x4696e8]
test eax, eax
mov dword [esp + 0x20], edx
je 0x43844c
mov eax, dword [0x4696f0]
test eax, eax
jle 0x43844c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
jne 0x43844c
xor edi, edi
jmp 0x43852f
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x4384e7
test edi, edi
mov dword [esp + 0x50], 0
jle 0x4384e1
mov eax, dword [0x4696e8]
test eax, eax
je 0x438484
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438484
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x4384e1
push edi
call dword [sym.imp.MSVCR71.dll_malloc]
add esp, 4
test eax, eax
mov dword [esp + 0x50], eax
jne 0x4384cb
mov eax, dword [0x4696e8]
test eax, eax
je 0x4384b6
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4384b6
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x4384e1
call fcn.00410f50
mov edi, dword [esp + 0x50]
mov dword [0x4696e8], 1
jmp 0x43852b
mov ecx, edi
mov edi, dword [esp + 0x50]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x50]
jmp 0x43852b
mov eax, dword [esp + 0x20]
push edi
push eax
call dword [sym.imp.MSVCR71.dll_realloc]
mov edi, eax
add esp, 8
test edi, edi
jne 0x438541
mov eax, dword [0x4696e8]
test eax, eax
je 0x43851c
mov eax, dword [0x4696f0]
test eax, eax
jle 0x43851c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x43852b
call fcn.00410f50
mov dword [0x4696e8], 1
test edi, edi
jne 0x438541
mov eax, dword [esp + 0x20]
test eax, eax
je 0x438541
push eax
call dword [sym.imp.MSVCR71.dll_free]
add esp, 4
mov dword [ebp + 0x20], edi
mov eax, dword [ebp + 0x20]
test eax, eax
mov edx, dword [esp + 0x310]
je 0x438559
mov dword [eax + esi*4], 0xffffffff
or eax, 0xffffffff
sub eax, esi
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x48], eax
lea eax, [ecx + 1]
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 0x1c]
cmp ecx, eax
mov dword [esp + 0x54], ecx
jl 0x438678
mov ecx, dword [ebp + 0x20]
lea eax, [eax + eax + 0xa]
mov dword [ebp + 0x1c], eax
lea edi, [eax*4]
mov eax, dword [0x4696e8]
test eax, eax
mov dword [esp + 0x10], ecx
je 0x4385bc
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4385bc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
jne 0x4385bc
xor esi, esi
jmp 0x438658
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x438614
xor esi, esi
test edi, edi
jle 0x438654
mov eax, dword [0x4696e8]
test eax, eax
je 0x4385ee
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4385ee
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438654
push edi
call dword [sym.imp.MSVCR71.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
je 0x438625
mov ecx, edi
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
jmp 0x438654
push edi
push eax
call dword [sym.imp.MSVCR71.dll_realloc]
mov esi, eax
add esp, 8
test esi, esi
jne 0x43866a
mov eax, dword [0x4696e8]
test eax, eax
je 0x438645
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438645
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438654
call fcn.00410f50
mov dword [0x4696e8], 1
test esi, esi
jne 0x43866a
mov eax, dword [esp + 0x10]
test eax, eax
je 0x43866a
push eax
call dword [sym.imp.MSVCR71.dll_free]
add esp, 4
mov edx, dword [esp + 0x310]
mov ecx, dword [esp + 0x54]
mov dword [ebp + 0x20], esi
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x438686
mov dword [eax + ecx*4], 0xffffffff
or eax, 0xffffffff
sub eax, ecx
mov dword [ebx + 0x24], eax
mov dword [esp + 0x50], eax
cmp dword [ebx], 0
jle 0x438891
mov eax, dword [esp + 0x28]
test byte [eax + 0x15], 8
je 0x438891
mov eax, dword [edx + 0x20]
test eax, eax
jne 0x4386b7
mov dword [edx + 0x20], 1
mov ecx, dword [edx + 0x20]
mov dword [ebx + 0xc], ecx
inc dword [edx + 0x20]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
cmp ecx, eax
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x54], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], ecx
jg 0x438862
mov edx, dword [ebp + 0x4c]
mov esi, eax
xor eax, eax
inc esi
cmp edx, 0xbdf20da3
sete al
test eax, eax
jne 0x4386fa
cmp ecx, esi
jge 0x438842
xor ecx, ecx
mov edi, dword [ebp + 0x14]
test eax, eax
mov eax, dword [0x4696e8]
sete cl
imul ecx, ecx, 0x64
add esi, ecx
mov dword [esp + 0x24], esi
lea esi, [esi + esi*4]
shl esi, 2
test eax, eax
je 0x438737
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438737
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438842
test edi, edi
jne 0x4387cc
test esi, esi
jle 0x4387c8
mov eax, dword [0x4696e8]
test eax, eax
je 0x438767
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438767
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x4387c8
push esi
call dword [sym.imp.MSVCR71.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x10], edi
jne 0x4387ae
mov eax, dword [0x4696e8]
test eax, eax
je 0x43879b
mov eax, dword [0x4696f0]
test eax, eax
jle 0x43879b
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x4387c8
call fcn.00410f50
mov dword [0x4696e8], 1
mov esi, edi
jmp 0x43880c
mov edi, dword [esp + 0x10]
mov ecx, esi
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x10]
mov esi, edi
jmp 0x43880c
push esi
push edi
call dword [sym.imp.MSVCR71.dll_realloc]
mov esi, eax
add esp, 8
test esi, esi
jne 0x438810
mov eax, dword [0x4696e8]
test eax, eax
je 0x4387fd
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4387fd
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x43880c
call fcn.00410f50
mov dword [0x4696e8], 1
test esi, esi
je 0x438842
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
mov dword [ebp + 0x10], eax
mov dword [ebp + 0x14], esi
jle 0x438842
mov edx, ecx
sub eax, edx
lea ecx, [eax + eax*4]
shl ecx, 2
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4696e8]
test eax, eax
je 0x438862
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438862
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438891
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x54]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x30]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
xor ecx, ecx
mov byte [eax], 0x31
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [ebp + 0x234], cl
mov eax, dword [ebx + 0x44]
test eax, eax
mov dword [esp + 0x20], eax
je 0x438f04
mov ebx, dword [eax]
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov edi, 1
cmp ebx, edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], edi
jl 0x43890c
lea ecx, [ecx]
xor esi, esi
test ebx, ebx
jle 0x4388ff
cmp dword [ecx + esi*8], edi
je 0x4388d2
inc esi
cmp esi, ebx
jl 0x4388c6
jmp 0x4388ff
mov edx, dword [esp + 0x30]
lea ecx, [esi + esi*2]
mov eax, dword [edx + ecx*4 + 8]
mov ecx, dword [esp + 0x70]
lea eax, [eax + eax*4]
mov edx, dword [ecx + eax*8]
mov eax, dword [edx + 0xc]
mov ecx, dword [esp + 0x310]
push eax
push ecx
call fcn.00432eb0
mov ecx, dword [esp + 0x30]
add esp, 8
cmp esi, ebx
je 0x438908
inc edi
cmp edi, ebx
jle 0x4388c0
mov dword [esp + 0x2c], edi
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
cmp edx, ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x1c], edx
jg 0x438a9d
mov edi, dword [ebp + 0x4c]
xor eax, eax
inc ecx
cmp edi, 0xbdf20da3
sete al
test eax, eax
jne 0x43893d
cmp edx, ecx
jge 0x438a7d
xor ebx, ebx
mov edi, dword [ebp + 0x14]
test eax, eax
mov eax, dword [0x4696e8]
sete bl
imul ebx, ebx, 0x64
add ebx, ecx
lea esi, [ebx + ebx*4]
shl esi, 2
test eax, eax
je 0x438976
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438976
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438a7d
test edi, edi
jne 0x438a0b
test esi, esi
jle 0x438a07
mov eax, dword [0x4696e8]
test eax, eax
je 0x4389a6
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4389a6
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438a07
push esi
call dword [sym.imp.MSVCR71.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x10], edi
jne 0x4389ed
mov eax, dword [0x4696e8]
test eax, eax
je 0x4389da
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4389da
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438a07
call fcn.00410f50
mov dword [0x4696e8], 1
mov esi, edi
jmp 0x438a4b
mov edi, dword [esp + 0x10]
mov ecx, esi
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x10]
mov esi, edi
jmp 0x438a4b
push esi
push edi
call dword [sym.imp.MSVCR71.dll_realloc]
mov esi, eax
add esp, 8
test esi, esi
jne 0x438a4f
mov eax, dword [0x4696e8]
test eax, eax
je 0x438a3c
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438a3c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438a4b
call fcn.00410f50
mov dword [0x4696e8], 1
test esi, esi
je 0x438a7d
mov eax, dword [esp + 0x1c]
cmp ebx, eax
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x14], esi
jle 0x438a7d
mov edx, eax
sub ebx, edx
lea ecx, [ebx + ebx*4]
shl ecx, 2
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4696e8]
test eax, eax
je 0x438a9d
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438a9d
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438acd
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x2c]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x38]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
dec edx
xor ecx, ecx
mov byte [eax], 0x30
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [ebp + 0x234], cl
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x14]
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x38], ecx
mov ecx, dword [ebp + 0x10]
cmp ecx, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ecx
jg 0x438c6d
mov esi, dword [ebp + 0x4c]
mov ecx, eax
xor eax, eax
inc ecx
cmp esi, 0xbdf20da3
sete al
test eax, eax
jne 0x438b0d
cmp dword [esp + 0x1c], ecx
jge 0x438c4d
xor ebx, ebx
mov edi, dword [ebp + 0x14]
test eax, eax
mov eax, dword [0x4696e8]
sete bl
imul ebx, ebx, 0x64
add ebx, ecx
lea esi, [ebx + ebx*4]
shl esi, 2
test eax, eax
je 0x438b46
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438b46
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438c4d
test edi, edi
jne 0x438bdb
test esi, esi
jle 0x438bd7
mov eax, dword [0x4696e8]
test eax, eax
je 0x438b76
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438b76
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438bd7
push esi
call dword [sym.imp.MSVCR71.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x10], edi
jne 0x438bbd
mov eax, dword [0x4696e8]
test eax, eax
je 0x438baa
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438baa
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438bd7
call fcn.00410f50
mov dword [0x4696e8], 1
mov esi, edi
jmp 0x438c1b
mov edi, dword [esp + 0x10]
mov ecx, esi
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x10]
mov esi, edi
jmp 0x438c1b
push esi
push edi
call dword [sym.imp.MSVCR71.dll_realloc]
mov esi, eax
add esp, 8
test esi, esi
jne 0x438c1f
mov eax, dword [0x4696e8]
test eax, eax
je 0x438c0c
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438c0c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438c1b
call fcn.00410f50
mov dword [0x4696e8], 1
test esi, esi
je 0x438c4d
mov eax, dword [esp + 0x1c]
cmp ebx, eax
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x14], esi
jle 0x438c4d
mov edx, eax
sub ebx, edx
lea ecx, [ebx + ebx*4]
shl ecx, 2
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4696e8]
test eax, eax
je 0x438c6d
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438c6d
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438c9c
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x38]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x24]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
xor ecx, ecx
mov byte [eax], 0x30
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [ebp + 0x234], cl
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x1c]
neg eax
sbb eax, eax
and eax, 0xfffffff7
add eax, 0xfffffffe
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 0x18]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0xc]
cmp ecx, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ecx
jg 0x438e54
mov esi, dword [ebp + 0x4c]
mov ecx, eax
xor eax, eax
inc ecx
cmp esi, 0xbdf20da3
sete al
test eax, eax
jne 0x438ced
cmp dword [esp + 0x1c], ecx
jge 0x438e2f
xor ebx, ebx
mov edi, dword [ebp + 0x14]
test eax, eax
mov eax, dword [0x4696e8]
sete bl
imul ebx, ebx, 0x64
add ebx, ecx
lea esi, [ebx + ebx*4]
shl esi, 2
test eax, eax
je 0x438d26
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438d26
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438e2f
test edi, edi
jne 0x438dbb
test esi, esi
jle 0x438db7
mov eax, dword [0x4696e8]
test eax, eax
je 0x438d56
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438d56
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438db7
push esi
call dword [sym.imp.MSVCR71.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x10], edi
jne 0x438d9d
mov eax, dword [0x4696e8]
test eax, eax
je 0x438d8a
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438d8a
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438db7
call fcn.00410f50
mov dword [0x4696e8], 1
mov edx, edi
jmp 0x438dfd
mov edi, dword [esp + 0x10]
mov ecx, esi
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x10]
mov edx, edi
jmp 0x438dfd
push esi
push edi
call dword [sym.imp.MSVCR71.dll_realloc]
mov esi, eax
add esp, 8
test esi, esi
jne 0x438dfb
mov eax, dword [0x4696e8]
test eax, eax
je 0x438dec
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438dec
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x438dfb
call fcn.00410f50
mov dword [0x4696e8], 1
mov edx, esi
test edx, edx
je 0x438e2f
mov eax, dword [esp + 0x1c]
cmp ebx, eax
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x14], edx
jle 0x438e2f
mov esi, eax
sub ebx, esi
lea ecx, [ebx + ebx*4]
shl ecx, 2
lea esi, [esi + esi*4]
lea edi, [edx + esi*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4696e8]
xor esi, esi
cmp eax, esi
je 0x438e54
cmp dword [0x4696f0], esi
jle 0x438e54
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
jne 0x438e54
xor edx, edx
jmp 0x438e8a
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
mov ecx, dword [esp + 0x24]
inc eax
mov dword [ebp + 0xc], eax
lea eax, [ecx + ecx*4]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x34]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x48]
xor esi, esi
mov dword [eax + 8], edx
mov byte [eax], 0x6c
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], esi
mov byte [ebp + 0x234], 0
mov edx, ecx
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x54]
push ebp
call fcn.0041b050
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
mov edx, dword [esp + 0x18]
add esp, 4
cmp ecx, esi
mov dword [eax + 0x1c], esi
jle 0x438ee7
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x28]
add edi, 8
add ebx, 4
lea ebx, [ebx]
cmp byte [ebx], 0
je 0x438ed6
mov eax, dword [edi]
mov ecx, dword [esp + 0x70]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
call fcn.00414980
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
inc esi
add ebx, 8
add edi, 0xc
cmp esi, ecx
jl 0x438ec0
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x14]
mov dword [edx + 0x2c], 2
mov dword [edx + 0x30], ecx
mov eax, dword [ebp + 0xc]
mov dword [edx + 0x34], eax
jmp 0x4399e8
mov eax, dword [ebx + 4]
test ah, 1
je 0x4392e8
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
push 0
push 3
push ecx
push edx
push 0xffffffffffffffff
push eax
lea ecx, [esp + 0x78]
push ecx
call fcn.0042c970
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0x32c]
push eax
call fcn.004372d0
mov edx, dword [ebx + 0x20]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x48], edx
mov edx, dword [ebp + 0x10]
add esp, 0x20
cmp edx, ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x1c], edx
jg 0x4390db
mov edi, dword [ebp + 0x4c]
xor eax, eax
inc ecx
cmp edi, 0xbdf20da3
sete al
test eax, eax
jne 0x438f7b
cmp edx, ecx
jge 0x4390bb
xor ebx, ebx
mov edi, dword [ebp + 0x14]
test eax, eax
mov eax, dword [0x4696e8]
sete bl
imul ebx, ebx, 0x64
add ebx, ecx
lea esi, [ebx + ebx*4]
shl esi, 2
test eax, eax
je 0x438fb4
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438fb4
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x4390bb
test edi, edi
jne 0x439049
test esi, esi
jle 0x439045
mov eax, dword [0x4696e8]
test eax, eax
je 0x438fe4
mov eax, dword [0x4696f0]
test eax, eax
jle 0x438fe4
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x439045
push esi
call dword [sym.imp.MSVCR71.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x10], edi
jne 0x43902b
mov eax, dword [0x4696e8]
test eax, eax
je 0x439018
mov eax, dword [0x4696f0]
test eax, eax
jle 0x439018
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x439045
call fcn.00410f50
mov dword [0x4696e8], 1
mov esi, edi
jmp 0x439089
mov edi, dword [esp + 0x10]
mov ecx, esi
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x10]
mov esi, edi
jmp 0x439089
push esi
push edi
call dword [sym.imp.MSVCR71.dll_realloc]
mov esi, eax
add esp, 8
test esi, esi
jne 0x43908d
mov eax, dword [0x4696e8]
test eax, eax
je 0x43907a
mov eax, dword [0x4696f0]
test eax, eax
jle 0x43907a
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x439089
call fcn.00410f50
mov dword [0x4696e8], 1
test esi, esi
je 0x4390bb
mov eax, dword [esp + 0x1c]
cmp ebx, eax
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x14], esi
jle 0x4390bb
mov edx, eax
sub ebx, edx
lea ecx, [ebx + ebx*4]
shl ecx, 2
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4696e8]
test eax, eax
je 0x4390db
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4390db
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x43910e
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x28]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x38]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
xor ecx, ecx
mov byte [eax], 0x24
mov dword [eax + 4], 1
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [ebp + 0x234], cl
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
cmp ecx, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ecx
jg 0x4392a3
mov esi, dword [ebp + 0x4c]
mov ecx, eax
xor eax, eax
inc ecx
cmp esi, 0xbdf20da3
sete al
test eax, eax
jne 0x439143
cmp dword [esp + 0x1c], ecx
jge 0x439283
xor ebx, ebx
mov edi, dword [ebp + 0x14]
test eax, eax
mov eax, dword [0x4696e8]
sete bl
imul ebx, ebx, 0x64
add ebx, ecx
lea esi, [ebx + ebx*4]
shl esi, 2
test eax, eax
je 0x43917c
mov eax, dword [0x4696f0]
test eax, eax
jle 0x43917c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x439283
test edi, edi
jne 0x439211
test esi, esi
jle 0x43920d
mov eax, dword [0x4696e8]
test eax, eax
je 0x4391ac
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4391ac
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x43920d
push esi
call dword [sym.imp.MSVCR71.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x10], edi
jne 0x4391f3
mov eax, dword [0x4696e8]
test eax, eax
je 0x4391e0
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4391e0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x43920d
call fcn.00410f50
mov dword [0x4696e8], 1
mov esi, edi
jmp 0x439251
mov edi, dword [esp + 0x10]
mov ecx, esi
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x10]
mov esi, edi
jmp 0x439251
push esi
push edi
call dword [sym.imp.MSVCR71.dll_realloc]
mov esi, eax
add esp, 8
test esi, esi
jne 0x439255
mov eax, dword [0x4696e8]
test eax, eax
je 0x439242
mov eax, dword [0x4696f0]
test eax, eax
jle 0x439242
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x439251
call fcn.00410f50
mov dword [0x4696e8], 1
test esi, esi
je 0x439283
mov eax, dword [esp + 0x1c]
cmp ebx, eax
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x14], esi
jle 0x439283
mov edx, eax
sub ebx, edx
lea ecx, [ebx + ebx*4]
shl ecx, 2
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4696e8]
test eax, eax
je 0x4392a3
mov eax, dword [0x4696f0]
test eax, eax
jle 0x4392a3
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4696cc], eax
je 0x4392d6
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x34]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x24]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x28]
mov dword [eax + 8], ecx
xor ecx, ecx
mov byte [eax], 0x2d
mov dword [eax + 4], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [ebp + 0x234], cl
mov edx, dword [esp + 0x14]
mov dword [edx + 0x2c], 0x15
mov ebx, edx
jmp 0x4399e8
test ah, 2
je 0x4394b7
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
push 0
push 0x24
push eax
push esi
push 0xffffffffffffffff
push ecx
lea edx, [esp + 0x78]
push edx
mov dword [esp + 0x48], 0x15
call fcn.0042c970
mov ecx, dword [esp + 0x50]
push 0
push 0x18
mov edi, eax
mov eax, dword [esp + 0x68]
push eax
push esi
push 0xffffffffffffffff
push ecx
lea edx, [esp + 0x94]
push edx
call fcn.0042c970
mov ecx, dword [esp + 0x50]
add esp, 0x38
test ecx, ecx
mov dword [esp + 0x20], eax
je 0x43934f
mov ecx, edi
mov edi, eax
mov dword [esp + 0x20], ecx
test edi, edi
je 0x4393be
mov esi, dword [edi]
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x310]
push eax
push ecx
call fcn.00432eb0
mov al, byte [esi]
add esp, 8
cmp al, 0x46
je 0x439377
cmp al, 0x45
je 0x439377
xor eax, eax
jmp 0x43937c
mov eax, 1
mov edx, dword [esp + 0x48]
push edx
push eax
push 0x75
mov esi, ebp
call fcn.0041f960
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x40]
neg edx
sbb edx, edx
push eax
and edx, 0xffffffe4
push ecx
add edx, 0x81
push edx
call fcn.0041f960
add esp, 0x18
mov eax, edi
mov edx, ebx
call fcn.00414980
mov edi, dword [esp + 0x18]
jmp 0x4393e6
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x34]
mov edx, edi
neg edx
sbb edx, edx
push eax
and edx, 0xffffffb5
push ecx
add edx, 0x80
push edx
mov esi, ebp
call fcn.0041f960
add esp, 0xc
mov eax, dword [esp + 0x20]
test eax, eax
je 0x43945d
mov edi, dword [eax]
mov ecx, dword [edi + 0xc]
mov esi, dword [esp + 0x310]
push ecx
push esi
call fcn.00432eb0
mov edx, dword [esi + 0x20]
mov dword [ebx + 8], edx
inc dword [esi + 0x20]
mov eax, dword [ebx + 8]
push 1
push eax
push 0x7f
mov esi, ebp
call fcn.0041f960
mov al, byte [edi]
add esp, 0x14
cmp al, 0x47
je 0x43943b
cmp al, 0x45
je 0x43943b
mov eax, dword [esp + 0x18]
xor ecx, ecx
test eax, eax
setne cl
lea ecx, [ecx + ecx + 0x45]
mov dword [esp + 0x2c], ecx
jmp 0x43944e
mov eax, dword [esp + 0x18]
xor edx, edx
test eax, eax
sete dl
lea edx, [edx + edx + 0x46]
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x20]
mov edx, ebx
call fcn.00414980
mov edi, dword [esp + 0x18]
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x34]
neg edi
sbb edi, edi
and edi, 0xffffffc3
add edi, 0x6f
mov dword [ebx + 0x2c], edi
mov edi, dword [esp + 0x2c]
cmp edi, 0x15
mov dword [ebx + 0x30], ecx
mov dword [ebx + 0x34], eax
je 0x4399e8
push 0
mov edx, ecx
push edx
push 0x26
mov esi, ebp
call fcn.0041f960
mov eax, dword [ebx + 8]
push 0
push eax
push 1
call fcn.0041f960
mov ecx, dword [esp + 0x60]
push ecx
push 0x163
push edi
call fcn.0041f960
add esp, 0x24
jmp 0x4399e8
test ah, 0x20
je 0x43989b
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x14]
mov ebx, dword [ecx + 0x38]
mov edi, eax
shr eax, 0x11
and eax, 1
push edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x44]
push eax
mov eax, dword [esp + 0x318]
lea edx, [esp + 0x68]
push edx
shr edi, 0x10
push ecx
and edi, 1
push eax
mov dword [esp + 0x24], edi
call fcn.004373b0
add esp, 0x14
test ebx, ebx
mov dword [esp + 0x30], 0
jle 0x43952e
mov dword [esp + 0x24], ebx
mov dword [esp + 0x30], ebx
push 0
lea eax, [ebx - 1]
push eax
push 0x5f
mov esi, ebp
call fcn.0041f960
mov eax, dword [esp + 0x30]
add esp, 0xc
dec eax
mov dword [esp + 0x24], eax
jne 0x439511
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx + 0x28]
cmp byte [ebx + edx], 0
jne 0x43954a
mov edx, 0x18
mov dword [esp + 0x54], 0x24
jmp 0x439565
mov eax, edi
mov edi, dword [esp + 0x1c]
mov edx, 0x24
mov dword [esp + 0x54], 0x18
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], eax
test edi, edi
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x28], ecx
je 0x4395f2
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 8]
mov esi, dword [esp + 0x30]
mov eax, dword [eax + esi*4]
push ecx
mov ecx, dword [esp + 0x48]
push edx
mov edx, dword [esp + 0x48]
push ecx
push edx
push eax
mov eax, dword [esp + 0x48]
push eax
lea ecx, [esp + 0x78]
push ecx
call fcn.0042c970
mov ecx, dword [esp + 0x32c]
mov edi, eax
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
push eax
push ecx
call fcn.00432eb0
mov edx, dword [esp + 0x4c]
lea eax, [ebx + ebx]
or ecx, 0xffffffff
push edx
sub ecx, eax
push ecx
push 0x41
mov esi, ebp
call fcn.0041f960
xor edx, edx
mov dl, byte [edi + 0xa]
add esp, 0x30
mov eax, edi
and edx, 0x28
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x14]
call fcn.00414980
mov dword [esp + 0x20], 0x49
jmp 0x439611
xor eax, eax
test ebx, ebx
setle al
mov dword [esp + 0x24], 1
dec eax
and eax, 0x34
add eax, 0x15
cmp eax, 0x15
mov dword [esp + 0x20], eax
je 0x439675
mov eax, dword [esp + 0x310]
mov ecx, dword [eax + 0x20]
mov edx, dword [esp + 0x14]
mov dword [edx + 8], ecx
inc dword [eax + 0x20]
mov eax, dword [esp + 0x10]
push 0
add eax, ebx
push eax
push 0x5c
mov esi, ebp
call fcn.0041f960
mov eax, dword [esp + 0x38]
push ebp
call fcn.0041caa0
mov edi, dword [esp + 0x28]
add esp, 0x10
test edi, edi
je 0x439667
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x3c]
neg eax
sbb eax, eax
push ecx
and eax, 0xfffffff4
push edx
add eax, 0x65
push eax
jmp 0x43968b
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 8]
push 1
push edx
push 0x7f
jmp 0x43968b
mov edi, dword [esp + 0x18]
test edi, edi
je 0x439693
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x3c]
push eax
push ecx
push 0x35
mov esi, ebp
call fcn.0041f960
add esp, 0xc
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x439712
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 8]
mov ecx, dword [esp + 0x30]
mov ecx, dword [edx + ecx*4]
mov edx, dword [esp + 0x54]
push eax
mov eax, dword [esp + 0x48]
push edx
mov edx, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0x40]
push edx
push ecx
push eax
lea ecx, [esp + 0x78]
push ecx
call fcn.0042c970
mov ecx, dword [esp + 0x32c]
mov edi, eax
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
push eax
push ecx
call fcn.00432eb0
mov edx, dword [esp + 0x4c]
or eax, 0xffffffff
push edx
sub eax, ebx
push eax
push 0x41
mov esi, ebp
call fcn.0041f960
mov edx, dword [esp + 0x44]
xor ecx, ecx
mov cl, byte [edi + 0xa]
add esp, 0x30
mov eax, edi
and ecx, 0x28
mov dword [esp + 0x30], ecx
call fcn.00414980
mov edi, dword [esp + 0x18]
jmp 0x43971a
mov dword [esp + 0x30], 1
test ebx, ebx
jg 0x439748
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x439748
test edi, edi
je 0x439737
mov dword [esp + 0x20], 0x15
jmp 0x4397b9
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x3c]
push edx
push eax
push 0x80
jmp 0x4397af
mov ecx, dword [esp + 0x1c]
push 0
add ecx, ebx
push ecx
push 0x5c
mov esi, ebp
call fcn.0041f960
mov eax, dword [esp + 0x38]
push ebp
call fcn.0041caa0
add esp, 0x10
test edi, edi
je 0x439796
mov eax, dword [esp + 0x310]
mov edx, dword [eax + 0x20]
mov ecx, dword [esp + 0x14]
mov dword [ecx + 8], edx
inc dword [eax + 0x20]
mov eax, dword [ecx + 8]
push 1
push eax
push 0x7f
call fcn.0041f960
mov dword [esp + 0x2c], 0x27
jmp 0x4397b6
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x3c]
neg eax
sbb eax, eax
push ecx
and eax, 0x7a
push edx
add eax, 7
push eax
mov esi, ebp
call fcn.0041f960
add esp, 0xc
cmp dword [esp + 0x20], 0x15
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x54], ecx
je 0x43981f
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
push 0
push eax
push 1
mov esi, ebp
call fcn.0041f960
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x2c]
push ecx
push edx
push eax
call fcn.0041f960
mov eax, dword [esp + 0x3c]
add esp, 0x18
test eax, eax
je 0x4397fd
test edi, edi
je 0x439809
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x43981f
test edi, edi
je 0x43981f
push ebp
mov eax, 0xfffffffe
mov ecx, 0x4615d0
or edx, 0xffffffff
call fcn.0041b050
add esp, 4
mov eax, dword [esp + 0x1c]
or eax, dword [esp + 0x10]
je 0x439849
mov ecx, dword [esp + 0x3c]
push ebx
push ecx
push 3
mov esi, ebp
call fcn.0041f960
mov edx, dword [esp + 0x5c]
push edx
push 1
push 0x41
call fcn.0041f960
add esp, 0x18
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x439875
mov eax, dword [esp + 0x3c]
push 0
push eax
push 0x37
mov esi, ebp
call fcn.0041f960
mov ecx, dword [esp + 0x40]
push 0
push ecx
push 0x81
call fcn.0041f960
add esp, 0x18
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x54]
neg edi
sbb edi, edi
and edi, 0xffffffc3
add edi, 0x6f
mov dword [eax + 0x2c], edi
mov dword [eax + 0x30], edx
mov dword [eax + 0x34], ecx
mov ebx, eax
jmp 0x4399e8
test ah, 0x10
je 0x4399c1
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
mov esi, dword [ebx + 0x38]
push edx
mov edx, dword [esp + 0x314]
push eax
lea ecx, [esp + 0x68]
push ecx
push ebx
push edx
call fcn.004373b0
mov edi, dword [ebx + 0x20]
push 0
push esi
push 0x5c
mov esi, ebp
call fcn.0041f960
mov eax, dword [esp + 0x4c]
push ebp
call fcn.0041caa0
mov eax, dword [ebx + 8]
push 0
push eax
push 0x7f
call fcn.0041f960
mov eax, dword [esp + 0x48]
add esp, 0x30
test eax, eax
push edi
je 0x439932
mov ecx, dword [esp + 0x40]
push ecx
push 0x59
call fcn.0041f960
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 8]
push 0
push eax
push 1
call fcn.0041f960
mov ecx, dword [esp + 0x54]
push edi
push ecx
push 0x27
mov ebx, eax
call fcn.0041f960
mov edx, dword [esp + 0x38]
add esp, 0x24
mov dword [edx + 0x2c], 0x32
jmp 0x439983
mov eax, dword [esp + 0x40]
push eax
push 0x81
call fcn.0041f960
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 8]
push 0
push edx
push 1
mov esi, ebp
call fcn.0041f960
mov ebx, eax
mov eax, dword [esp + 0x54]
push edi
push eax
push 0x49
call fcn.0041f960
mov edx, eax
push ebp
mov eax, 0xfffffffe
mov ecx, 0x4615d0
call fcn.0041b050
mov ecx, dword [esp + 0x3c]
add esp, 0x28
mov dword [ecx + 0x2c], 0x6f
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x4399af
mov edx, dword [esp + 0x3c]
push 0
push edx
push 0x37
mov esi, ebp
call fcn.0041f960
mov eax, dword [esp + 0x40]
push 0
push eax
push 0x81
call fcn.0041f960
add esp, 0x18
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
mov dword [eax + 0x34], ebx
mov dword [eax + 0x30], ecx
mov ebx, eax
jmp 0x4399e8
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x34]
push edx
push eax
push 0x80
mov esi, ebp
mov dword [ebx + 0x2c], 0x6f
mov dword [ebx + 0x30], eax
call fcn.0041f960
add esp, 0xc
inc eax
mov dword [ebx + 0x34], eax
mov eax, dword [esp + 0x208]
xor ecx, ecx
test eax, eax
jle 0x439a12
mov edx, dword [esp + 0x34]
lea esp, [esp]
cmp dword [esp + ecx*4 + 0x20c], edx
je 0x439b50
inc ecx
cmp ecx, eax
jl 0x439a00
xor eax, eax
xor edx, edx
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
not eax
and edi, eax
mov eax, dword [esp + 0x68]
not edx
and esi, edx
test eax, eax
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], esi
jle 0x439a94
mov esi, dword [esp + 0x70]
add esi, 0xc
mov dword [esp + 0x38], eax
test byte [esi], 6
jne 0x439a86
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
mov edx, dword [esp + 0x44]
and eax, edi
and ecx, edx
or eax, ecx
jne 0x439a86
mov ecx, dword [ebx + 0xc]
test ecx, ecx
mov eax, dword [esi - 0xc]
je 0x439a68
test byte [eax + 2], 1
je 0x439a86
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x310]
push 1
push ecx
push eax
push edx
call fcn.00433b80
mov al, byte [esi]
add esp, 0x10
or al, 4
mov byte [esi], al
mov eax, dword [esp + 0x38]
add esi, 0x28
dec eax
mov dword [esp + 0x38], eax
jne 0x439a41
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x439b09
mov ecx, dword [ebp + 0xc]
push eax
push 1
push 0x31
mov esi, ebp
mov dword [ebx + 0x28], ecx
call fcn.0041f960
mov eax, dword [esp + 0x74]
add esp, 0xc
xor edi, edi
test eax, eax
jle 0x439b09
mov esi, dword [esp + 0x70]
add esi, 0xc
test byte [esi], 6
jne 0x439afd
mov ecx, dword [esp + 0x40]
mov eax, dword [esi + 0x14]
mov edx, dword [esp + 0x44]
and eax, ecx
mov ecx, dword [esi + 0x18]
and ecx, edx
or eax, ecx
jne 0x439afd
mov edx, dword [esp + 0x50]
mov eax, dword [esi - 0xc]
mov ecx, dword [esp + 0x310]
push 1
push edx
push eax
push ecx
call fcn.00433b80
mov al, byte [esi]
add esp, 0x10
or al, 4
mov byte [esi], al
mov eax, dword [esp + 0x68]
inc edi
add esi, 0x28
cmp edi, eax
jl 0x439ac1
mov edx, dword [esp + 0x314]
mov eax, dword [esp + 0x4c]
movsx ecx, word [edx]
inc eax
add ebx, 0x4c
cmp eax, ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x14], ebx
jl 0x4383b6
mov esi, dword [esp + 0x5c]
mov edx, dword [esp + 0x50]
lea eax, [esp + 0x60]
push eax
mov dword [esi + 0xc], edx
call fcn.0041dad0
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x2fc
ret
mov eax, 1
xor edx, edx
call fcn.00458e20
jmp 0x439a16