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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x84
push ebx
mov ebx, ecx
mov byte [esp + 0xb], 0
push esi
xor ecx, ecx
mov dword [esp + 0x10], ebx
xor eax, eax
mov dword [esp + 0x54], ecx
mov esi, dword [ebx + 8]
push edi
mov edi, edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x54], edi
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x64], ecx
cmp dword [esi + 0x78], ecx
jg 0x503329
push eax
push eax
push eax
lea edx, [eax + 0x11]
mov ecx, esi
call fcn.00495eb0
add esp, 0xc
mov dword [esp + 0x64], eax
jmp 0x50335c
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x11
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebp + 8]
xorps xmm0, xmm0
mov ecx, dword [ebp + 0x14]
mov edi, dword [edi + 0x18]
mov dword [esp + 0x24], 0
mov eax, dword [edx + 0x10]
mov ecx, dword [ecx + 0x4c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x30], ecx
movlpd qword [esp + 0x68], xmm0
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edi
mov dword [esp + 0x50], eax
cmp edi, eax
jae 0x5037b3
mov eax, dword [esp + 0x6c]
lea ecx, [edx + 0x2c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x40], 1
mov dword [esp + 0x34], eax
test byte [edi + 0xa], 2
mov esi, dword [edi]
jne 0x503607
test byte [edx + 0x24], 8
je 0x5033de
test byte [esi + 4], 1
je 0x503607
mov ecx, dword [esp + 0x38]
mov eax, 3
mov word [esp + 0x88], ax
mov dword [esp + 0x78], fcn.004af760
mov dword [esp + 0x7c], 0x4af640
mov eax, dword [ecx]
mov dword [esp + 0x8c], eax
test esi, esi
je 0x50344a
mov edx, esi
lea ecx, [esp + 0x74]
call fcn.004a9960
cmp word [esp + 0x88], 0
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
je 0x503604
mov ecx, dword [ebx]
mov edx, esi
push 0
push 0
call fcn.004ae5b0
mov ecx, dword [esp + 0x40]
add esp, 8
mov esi, eax
mov dword [esp + 0x48], eax
jmp 0x503450
xor esi, esi
mov dword [esp + 0x48], esi
mov eax, dword [esp + 0x28]
mov edx, dword [ebx]
mov dword [esp + 0x60], edx
mov dword [esp + 0x18], ecx
test eax, eax
je 0x503600
test esi, esi
je 0x503604
mov eax, dword [eax + 4]
lea ecx, [esi + 4]
and eax, 0x20000001
cmp eax, 0x20000000
je 0x503496
mov eax, dword [ecx]
and eax, 0x20000001
mov dword [esp + 0x4c], ecx
cmp eax, 0x20000000
jne 0x503565
cmp byte [ebx + 0xd0], 2
mov dword [esp + 0x4c], ecx
jae 0x503565
mov edx, dword [esp + 0x28]
mov ecx, ebx
call fcn.004ae420
mov edx, esi
mov ecx, ebx
call fcn.004ae420
lea edx, [esp + 0x4c]
mov dword [esp + 0x4c], 0
mov ecx, 0x5946d8
call fcn.00475870
mov ecx, dword [esp + 0x60]
xor edx, edx
mov esi, eax
test esi, esi
push 0
sete dl
lea edx, [edx*2 + 0x34]
push edx
call fcn.00471a30
mov edx, eax
add esp, 8
mov dword [esp + 0x28], edx
test edx, edx
je 0x503558
push 0x34
push 0
push edx
call fcn.0054f8e0
mov edx, dword [esp + 0x34]
or eax, 0xffffffff
add esp, 0xc
mov byte [edx], 0x9b
mov word [edx + 0x22], ax
test esi, esi
je 0x503546
mov eax, dword [esp + 0x4c]
mov ecx, 0x20800400
test eax, eax
mov dword [edx + 8], eax
mov esi, 0x10800400
mov dword [edx + 0x18], 1
cmovne ecx, esi
or dword [edx + 4], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
jmp 0x503604
lea eax, [edx + 0x34]
mov dword [edx + 8], eax
mov word [eax], 0x30
mov dword [edx + 0x18], 1
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
jmp 0x503604
push 0
push 0x34
mov ecx, edx
call fcn.00471a30
mov esi, eax
add esp, 8
test esi, esi
je 0x5035e2
push 0x34
push 0
push esi
call fcn.0054f8e0
mov ecx, dword [esp + 0x58]
or eax, 0xffffffff
mov edx, dword [esp + 0x54]
add esp, 0xc
mov word [esi + 0x22], ax
mov eax, dword [esp + 0x28]
mov byte [esi], 0x2c
mov dword [esi + 0x10], edx
mov ecx, dword [ecx]
and ecx, 0x200104
mov dword [esi + 0xc], eax
or ecx, dword [esi + 4]
mov dword [esi + 4], ecx
mov eax, dword [eax + 4]
and eax, 0x200104
or eax, ecx
mov ecx, esi
mov dword [esi + 4], eax
call fcn.004ad6e0
mov eax, dword [ebx]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x5035f8
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.00474c20
add esp, 0xc
jmp 0x5035f8
mov edx, dword [esp + 0x28]
mov ecx, dword [ebx]
call fcn.004ae2c0
mov edx, dword [esp + 0x48]
mov ecx, dword [ebx]
call fcn.004ae2c0
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], esi
mov edx, dword [ebp + 8]
mov eax, dword [edi + 0x14]
cmp eax, dword [ecx]
jne 0x503795
movzx ecx, word [edi + 0xc]
test cl, 0x82
je 0x503791
test byte [edx + 0x24], 8
je 0x503635
mov eax, dword [edi]
test byte [eax + 4], 1
jne 0x503635
test cl, cl
js 0x503791
mov ecx, dword [ebp + 0xc]
mov eax, dword [edi + 0x24]
and ecx, dword [edi + 0x20]
and eax, dword [ebp + 0x10]
or ecx, eax
jne 0x503791
mov edx, dword [edi + 0x18]
test edx, edx
js 0x503791
mov eax, dword [ebp + 8]
add edx, edx
mov ecx, dword [edi]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov dl, byte [eax + edx*8 + 8]
call fcn.004accb0
test eax, eax
je 0x503791
mov edx, dword [edi + 0x18]
xor esi, esi
cmp edx, 0x40
jl 0x503686
mov dword [esp + 0x48], SysStringLen
jmp 0x50369f
mov eax, edx
xor ecx, ecx
bts esi, eax
cmp eax, 0x20
cmovae ecx, esi
xor esi, ecx
cmp eax, 0x40
cmovae ecx, esi
mov dword [esp + 0x48], ecx
cmp byte [esp + 0x13], 0
jne 0x5036cb
mov ecx, dword [esp + 0x44]
add edx, edx
mov eax, dword [ecx + 4]
push dword [eax + edx*8]
push dword [ecx]
push str.automatic_index_on__s__s_
push 0x11c
call fcn.00474200
add esp, 0x10
mov byte [esp + 0x13], 1
mov eax, dword [esp + 0x48]
mov ecx, esi
and ecx, dword [esp + 0x34]
and eax, dword [esp + 0x20]
or ecx, eax
jne 0x503791
mov edx, dword [esp + 0x30]
mov ecx, dword [ebx]
mov dword [esp + 0x60], ecx
movzx eax, word [edx + 0x34]
mov edx, dword [esp + 0x40]
cmp eax, edx
jge 0x503763
lea eax, [edx + 7]
and eax, 0xfffffff8
mov dword [esp + 0x4c], eax
shl eax, 2
push 0
push eax
call fcn.00471a30
add esp, 8
mov dword [esp + 0x5c], eax
test eax, eax
je 0x5041ec
mov edx, dword [esp + 0x30]
movzx ecx, word [edx + 0x34]
shl ecx, 2
push ecx
push dword [edx + 0x38]
push eax
call fcn.0054f360
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov edx, dword [ecx + 0x38]
lea eax, [ecx + 0x40]
cmp edx, eax
je 0x50374e
mov ecx, dword [esp + 0x60]
call fcn.00471640
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x40]
mov dword [ecx + 0x38], eax
mov eax, dword [esp + 0x4c]
mov word [ecx + 0x34], ax
jmp 0x503767
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x38]
inc edx
mov ecx, dword [esp + 0x24]
or dword [esp + 0x34], esi
mov esi, dword [esp + 0x20]
mov dword [esp + 0x40], edx
mov dword [eax + ecx*4], edi
inc ecx
or esi, dword [esp + 0x48]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], esi
jmp 0x503799
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
mov edx, dword [ebp + 8]
add edi, 0x30
cmp edi, dword [esp + 0x50]
jb 0x5033c2
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
jmp 0x5037bb
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x24]
not esi
movzx eax, ax
or esi, 0x80000000
mov word [ecx + 0x30], ax
not edi
mov word [ecx + 0x18], ax
mov eax, dword [ebp + 8]
mov dword [ecx + 0x2c], 0x4241
mov edx, dword [edx + 0x38]
and edi, edx
mov dword [esp + 0x60], edx
and esi, dword [eax + 0x3c]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x20], esi
mov esi, 0x3f
mov dword [esp + 0x34], edi
movzx eax, word [eax + 0x22]
movsx ecx, ax
mov dword [esp + 0x4c], ecx
cmp si, ax
jge 0x503815
mov edi, esi
xor esi, esi
mov dword [esp + 0x18], edi
jmp 0x503825
mov edi, ecx
mov dword [esp + 0x4c], ecx
xor esi, esi
mov dword [esp + 0x18], edi
test edi, edi
jle 0x503866
mov ebx, dword [esp + 0x20]
nop dword [eax]
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x34]
and ecx, ebx
or edx, ecx
je 0x503855
inc dword [esp + 0x24]
inc esi
cmp esi, edi
jl 0x503830
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x60]
mov eax, dword [ebp + 8]
cmp dword [eax + 0x3c], 0
jg 0x503884
jl 0x503875
test edx, edx
jae 0x503884
mov eax, dword [esp + 0x24]
add eax, 0xffffffc1
add eax, ecx
mov dword [esp + 0x24], eax
jmp 0x503888
mov eax, dword [esp + 0x24]
mov ecx, dword [ebx]
movzx eax, ax
inc eax
movzx eax, ax
movsx esi, ax
mov dword [esp + 0x5c], eax
lea eax, [esi*4 + 9]
add eax, esi
lea edi, [esi*4 + 7]
and eax, 0xfffffff8
and edi, 0xfffffff8
add eax, 0x48
add eax, edi
mov dword [esp + 0x60], eax
cdq
push edx
push eax
test ecx, ecx
je 0x5038c5
call fcn.00471a30
jmp 0x5038ca
call fcn.00471370
add esp, 8
mov dword [esp + 0x2c], eax
test eax, eax
je 0x5041ec
push dword [esp + 0x60]
push 0
push eax
call fcn.0054f8e0
mov ecx, dword [esp + 0x38]
add esp, 0xc
lea edx, [ecx + 4]
xorps xmm0, xmm0
mov dword [esp + 0x38], edx
movlpd qword [esp + 0x68], xmm0
lea eax, [ecx + 0x48]
mov dword [esp + 0x60], edx
mov dword [ecx + 0x20], eax
add eax, edi
mov dword [ecx + 8], eax
xor edi, edi
mov dword [esp + 0x48], edi
lea eax, [eax + esi*2]
add eax, 2
mov dword [edx], eax
lea eax, [eax + esi*2]
mov esi, dword [esp + 0x24]
mov dword [ecx + 0x1c], eax
mov eax, dword [esp + 0x5c]
mov word [ecx + 0x34], ax
movzx eax, si
mov word [ecx + 0x32], ax
mov eax, dword [esp + 0x30]
mov dword [eax + 0x20], ecx
mov eax, dword [esp + 0x44]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x54]
mov dword [ecx], str.auto_index
mov esi, dword [eax + 0x18]
mov dword [esp + 0x40], esi
cmp esi, dword [esp + 0x50]
jae 0x503b04
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x48], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x18], eax
nop word [eax + eax]
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 0x14]
mov dword [esp + 0x60], edx
cmp eax, dword [ecx + 0x2c]
jne 0x503ae0
movzx ecx, word [esi + 0xc]
test cl, 0x82
je 0x503add
mov eax, dword [ebp + 8]
test byte [eax + 0x24], 8
je 0x5039ba
mov eax, dword [esi]
test byte [eax + 4], 1
jne 0x5039ba
test cl, cl
js 0x503add
mov ecx, dword [ebp + 0xc]
mov eax, dword [esi + 0x24]
and ecx, dword [esi + 0x20]
and eax, dword [ebp + 0x10]
or ecx, eax
jne 0x503add
mov edx, dword [esi + 0x18]
test edx, edx
js 0x503ad9
mov eax, dword [ebp + 8]
add edx, edx
mov ecx, dword [esi]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov dl, byte [eax + edx*8 + 8]
call fcn.004accb0
test eax, eax
je 0x503ad9
mov eax, dword [esi + 0x18]
xor edx, edx
movzx ecx, ax
mov dword [esp + 0x68], ecx
cmp eax, 0x40
jl 0x503a0f
mov esi, SysReAllocString
jmp 0x503a22
xor esi, esi
bts edx, eax
cmp eax, 0x20
cmovae esi, edx
xor edx, esi
cmp eax, 0x40
cmovae esi, edx
mov eax, dword [esp + 0x5c]
mov ecx, edx
and ecx, dword [esp + 0x48]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x38], eax
mov eax, esi
and eax, dword [esp + 0x4c]
or ecx, eax
jne 0x503ad5
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
or dword [esp + 0x48], edx
mov edx, dword [esp + 0x68]
mov eax, dword [eax + 4]
mov ecx, dword [ecx]
or dword [esp + 0x4c], esi
mov word [eax + edi*2], dx
test dword [ecx + 4], 0x200
je 0x503a74
mov esi, dword [ecx + 0xc]
mov edx, dword [ecx + 0x10]
jmp 0x503a7a
mov esi, dword [ecx + 0x10]
mov edx, dword [ecx + 0xc]
test dword [edx + 4], 0x100
jne 0x503a9d
test esi, esi
je 0x503a90
test dword [esi + 4], 0x100
jne 0x503a9b
mov ecx, ebx
call fcn.004acb00
test eax, eax
jne 0x503aa8
mov edx, esi
mov ecx, ebx
call fcn.004acb00
test eax, eax
je 0x503aac
mov ecx, dword [eax]
jmp 0x503ab1
mov ecx, 0x597438
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x38], edx
mov eax, dword [eax + 0x20]
mov dword [eax + edi*4], ecx
inc edi
mov eax, dword [esp + 0x5c]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x18], eax
jmp 0x503ae4
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x18]
add esi, 0x30
mov dword [esp + 0x40], esi
cmp esi, dword [esp + 0x50]
jb 0x503980
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x48], edi
mov dword [esp + 0x60], eax
xor esi, esi
cmp dword [esp + 0x18], esi
jle 0x503b5d
mov ebx, dword [esp + 0x60]
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x34]
and ecx, dword [esp + 0x20]
or edx, ecx
je 0x503b48
mov eax, dword [ebx]
mov word [eax + edi*2], si
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x20]
mov dword [eax + edi*4], 0x597438
inc edi
mov edx, dword [esp + 0x38]
inc esi
mov ebx, edx
cmp esi, dword [esp + 0x18]
jl 0x503b10
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x48], edi
mov eax, dword [ebp + 8]
cmp dword [eax + 0x3c], 0
jg 0x503ba5
jl 0x503b6e
cmp dword [eax + 0x38], 0
jae 0x503ba5
mov esi, dword [esp + 0x44]
mov eax, 0x3f
cmp ax, word [esi + 0x22]
jge 0x503ba5
mov ebx, dword [esp + 0x2c]
mov ecx, eax
mov eax, dword [edx]
mov word [eax + edi*2], cx
inc ecx
mov eax, dword [ebx + 0x20]
mov dword [eax + edi*4], 0x597438
inc edi
movsx eax, word [esi + 0x22]
cmp ecx, eax
jl 0x503b83
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x48], edi
mov eax, dword [edx]
or ecx, 0xffffffff
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
inc edx
mov word [eax + edi*2], cx
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebp + 0x14]
mov eax, dword [eax + 0x20]
mov dword [eax + edi*4], 0x597438
mov eax, dword [ebx + 0x28]
mov dword [ecx + 8], eax
inc dword [ebx + 0x28]
mov eax, dword [ecx + 8]
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x68], eax
cmp dword [esi + 0x78], ecx
jg 0x503bf8
push 0
push edx
push eax
mov edx, 0x73
mov ecx, esi
call fcn.00495eb0
add esp, 0xc
lea edi, [esi + 0x70]
jmp 0x503c2d
mov ebx, dword [esp + 0x68]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea edi, [esi + 0x70]
mov eax, dword [edi]
lea ecx, [ecx + ecx*4]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0x73
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebx + 8]
mov ecx, ebx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x68], eax
call fcn.004c8ab0
mov dword [esp + 0x60], eax
test eax, eax
je 0x503c7c
mov edx, dword [esp + 0x68]
mov ecx, dword [edx]
cmp byte [ecx + 0x57], 0
je 0x503c66
push eax
mov edx, 0xfffffff7
call fcn.004969c0
add esp, 4
lea edi, [esi + 0x70]
jmp 0x503c7c
mov eax, dword [edx + 0x74]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x70]
mov edx, dword [esp + 0x60]
mov byte [eax + ecx*4 - 0x13], 0xf7
mov dword [eax + ecx*4 - 4], edx
mov eax, dword [ebx]
test dword [eax + 0x50], 0x80000
jne 0x503ce6
mov ecx, dword [ebp + 0x14]
inc dword [ebx + 0x2c]
mov edx, dword [ebx + 0x2c]
mov dword [ecx + 0x34], edx
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x503cb4
push 0
push edx
push 0x2710
mov edx, 0x4c
mov ecx, esi
call fcn.00495eb0
add esp, 0xc
jmp 0x503ce6
mov ebx, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0x4c
mov dword [eax + ecx*4 + 4], 0x2710
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebp + 0x14]
movzx eax, byte [edx + 0x38]
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x54]
mov eax, dword [eax]
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 0x30], 0x10
lea eax, [eax + ecx*8]
mov dword [esp + 0x44], eax
je 0x503e07
mov ecx, dword [esi + 0x74]
mov edx, dword [eax + 0x24]
mov dword [esp + 0x60], edx
mov dword [esp + 0x58], ecx
cmp dword [esi + 0x78], ecx
jg 0x503d3d
push 0
push 0
push 0
mov edx, 0x47
mov ecx, esi
call fcn.00495eb0
mov edx, dword [esp + 0x6c]
add esp, 0xc
mov dword [esp + 0x58], eax
jmp 0x503d73
mov ebx, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0x47
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x74]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x68], eax
cmp dword [esi + 0x78], ecx
jg 0x503d9f
push eax
push 0
push edx
mov edx, 0xd
mov ecx, esi
call fcn.00495eb0
mov edx, dword [esp + 0x6c]
add esp, 0xc
jmp 0x503dd1
mov ebx, dword [esp + 0x68]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4 + 0xc], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0xd
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x1c]
mov esi, dword [esi + 0x74]
cmp dword [ecx + 0x78], esi
jg 0x503df3
push 0
push 0
push edx
mov edx, 0xe
call fcn.00495eb0
add esp, 0xc
mov esi, eax
jmp 0x503e5e
lea eax, [esi + 1]
mov dword [ecx + 0x74], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0xe
jmp 0x503e3e
mov ecx, dword [esp + 0x1c]
mov esi, dword [esi + 0x74]
mov edx, dword [edx + 4]
cmp dword [ecx + 0x78], esi
jg 0x503e2c
push 0
push 0
push edx
mov edx, 0x26
call fcn.00495eb0
add esp, 0xc
mov esi, eax
jmp 0x503e5e
lea eax, [esi + 1]
mov dword [ecx + 0x74], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0x26
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4 + 0x10], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 4], edx
mov eax, dword [esp + 0x28]
test eax, eax
je 0x503e88
dec dword [ebx + 0x38]
mov ecx, dword [ebx + 0x38]
push 0x10
push ecx
push eax
push ebx
mov dword [esp + 0x4c], ecx
call fcn.004b5da0
mov eax, dword [esp + 0x40]
add esp, 0x10
or dword [eax + 0x2c], 0x20000
mov al, byte [ebx + 0x13]
test al, al
jne 0x503e97
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
jmp 0x503ea6
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x98]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x2c]
push 0
push 0
push 0
push 0
push eax
push dword [ecx + 4]
mov ecx, ebx
mov dword [esp + 0x58], eax
call fcn.004cb500
mov dword [esp + 0x6c], eax
add esp, 0x18
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x68], eax
test eax, eax
je 0x503f61
mov edx, dword [esp + 0x30]
movzx ecx, word [edx + 0x18]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 0x74]
cmp dword [ecx + 0x78], edx
jg 0x503f0d
push dword [esp + 0x54]
mov edx, 0xb2
push 0
push eax
call fcn.00495eb0
add esp, 0xc
mov edx, eax
jmp 0x503f43
mov ebx, dword [esp + 0x68]
lea eax, [edx + 1]
mov dword [ecx + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x54]
mov dword [eax + ecx*4 + 0xc], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0xb2
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
cmp byte [eax + 0x57], 0
jne 0x503f61
mov eax, dword [edi]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x60]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
mov edx, dword [esp + 0x1c]
mov eax, dword [ebp + 0x14]
mov ecx, dword [edx + 0x74]
mov eax, dword [eax + 8]
mov dword [esp + 0x68], eax
cmp dword [edx + 0x78], ecx
jg 0x503f95
mov ecx, dword [esp + 0x1c]
mov edx, 0x89
push 0
push dword [esp + 0x44]
push eax
call fcn.00495eb0
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x503fcb
mov ebx, dword [esp + 0x68]
lea eax, [ecx + 1]
mov dword [edx + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x40]
mov dword [eax + ecx*4 + 8], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 0x89
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edx + 0x74]
test ecx, ecx
jle 0x503fe8
mov eax, dword [edi]
lea ecx, [ecx + ecx*4]
mov ebx, 0x10
mov word [eax + ecx*4 - 0x12], bx
mov ecx, dword [edx + 0x74]
mov ebx, dword [esp + 0x14]
cmp dword [esp + 0x28], 0
je 0x504030
mov eax, dword [edx + 0xc]
mov ebx, dword [edx + 0xc]
not dword [esp + 0x3c]
mov dword [esp + 0x68], eax
mov eax, dword [eax + 0x3c]
add eax, dword [ebx + 0x38]
mov ebx, dword [esp + 0x14]
jns 0x50401f
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x6c]
call fcn.004966d0
mov edx, dword [esp + 0x20]
add esp, 4
jmp 0x504030
mov eax, dword [edx + 0xc]
mov ebx, dword [esp + 0x3c]
mov eax, dword [eax + 0x40]
mov dword [eax + ebx*4], ecx
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x44]
test byte [eax + 0x30], 0x10
je 0x5040fa
mov ecx, dword [esp + 0x58]
test ecx, ecx
jns 0x50404a
mov ecx, dword [edx + 0x74]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x504059
mov ecx, 0x5d1b70
jmp 0x504061
mov eax, dword [edi]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x48]
mov edx, esi
add eax, dword [esp + 0x54]
mov dword [ecx + 8], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [esp + 0x44]
push dword [ecx + 8]
push dword [eax + 0x28]
push dword [ecx + 4]
mov ecx, ebx
call fcn.00503240
mov edx, dword [esp + 0x28]
add esp, 0xc
mov ecx, dword [edx + 0x74]
cmp dword [edx + 0x78], ecx
jg 0x5040bb
mov ecx, dword [esp + 0x1c]
mov edx, 0xb
push 0
push esi
push 0
call fcn.00495eb0
mov eax, dword [esp + 0x50]
add esp, 0xc
mov edx, dword [esp + 0x1c]
and dword [eax + 0x30], 0xffffffef
jmp 0x50417c
mov ebx, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [edx + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x44]
and dword [eax + 0x30], 0xffffffef
jmp 0x50417c
mov ecx, dword [ebp + 0x14]
lea eax, [esi + 1]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x60], ecx
mov ecx, dword [edx + 0x74]
cmp dword [edx + 0x78], ecx
jg 0x50412d
mov ecx, dword [esp + 0x1c]
mov edx, 5
push 0
push eax
push dword [esp + 0x68]
call fcn.00495eb0
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x504162
mov ebx, dword [esp + 0x60]
lea eax, [ecx + 1]
mov dword [edx + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi]
mov dword [eax + ecx*4 + 4], ebx
lea ebx, [esi + 1]
mov dword [eax + ecx*4 + 8], ebx
mov ebx, dword [esp + 0x14]
mov dword [eax + ecx*4], 5
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edx + 0x74]
test eax, eax
jle 0x50417c
lea ecx, [eax + eax*4]
mov ebx, 3
mov eax, dword [edi]
mov word [eax + ecx*4 - 0x12], bx
mov ebx, dword [esp + 0x14]
mov eax, dword [edx + 0x74]
mov dword [esp + 0x68], eax
test esi, esi
jns 0x50418a
lea esi, [eax - 1]
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x504199
mov eax, 0x5d1b70
jmp 0x5041a1
mov eax, dword [edi]
lea ecx, [esi + esi*4]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x68]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x5041c4
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x5041c4
movzx eax, al
mov dword [ebx + eax*4 + 0x98], ecx
inc byte [ebx + 0x13]
mov ecx, dword [esp + 0x64]
mov esi, dword [edx + 0x74]
test ecx, ecx
jns 0x5041d2
lea ecx, [esi - 1]
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x5041e1
mov eax, 0x5d1b70
jmp 0x5041e9
mov eax, dword [edi]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], esi
mov eax, dword [esp + 0x28]
test eax, eax
je 0x5041fd
mov ecx, dword [ebx]
mov edx, eax
call fcn.004ae2c0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret