Function at 0x505370
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 0x5053c9
push eax
push eax
push eax
lea edx, [eax + 0x11]
mov ecx, esi
call fcn.00497f80
add esp, 0xc
mov dword [esp + 0x64], eax
jmp 0x5053fc
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 0x505853
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 0x5056a7
test byte [edx + 0x24], 8
je 0x50547e
test byte [esi + 4], 1
je 0x5056a7
mov ecx, dword [esp + 0x38]
mov eax, 3
mov word [esp + 0x88], ax
mov dword [esp + 0x78], fcn.004b1820
mov dword [esp + 0x7c], 0x4b1700
mov eax, dword [ecx]
mov dword [esp + 0x8c], eax
test esi, esi
je 0x5054ea
mov edx, esi
lea ecx, [esp + 0x74]
call fcn.004aba30
cmp word [esp + 0x88], 0
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
je 0x5056a4
mov ecx, dword [ebx]
mov edx, esi
push 0
push 0
call fcn.004b0670
mov ecx, dword [esp + 0x40]
add esp, 8
mov esi, eax
mov dword [esp + 0x48], eax
jmp 0x5054f0
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 0x5056a0
test esi, esi
je 0x5056a4
mov eax, dword [eax + 4]
lea ecx, [esi + 4]
and eax, 0x20000001
cmp eax, 0x20000000
je 0x505536
mov eax, dword [ecx]
and eax, 0x20000001
mov dword [esp + 0x4c], ecx
cmp eax, 0x20000000
jne 0x505605
cmp byte [ebx + 0xd0], 2
mov dword [esp + 0x4c], ecx
jae 0x505605
mov edx, dword [esp + 0x28]
mov ecx, ebx
call fcn.004b04e0
mov edx, esi
mov ecx, ebx
call fcn.004b04e0
lea edx, [esp + 0x4c]
mov dword [esp + 0x4c], 0
mov ecx, 0x5967b8
call fcn.00477940
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.00473b00
mov edx, eax
add esp, 8
mov dword [esp + 0x28], edx
test edx, edx
je 0x5055f8
push 0x34
push 0
push edx
call fcn.005518b0
mov edx, dword [esp + 0x34]
or eax, 0xffffffff
add esp, 0xc
mov byte [edx], 0x9b
mov word [edx + 0x22], ax
test esi, esi
je 0x5055e6
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 0x5056a4
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 0x5056a4
push 0
push 0x34
mov ecx, edx
call fcn.00473b00
mov esi, eax
add esp, 8
test esi, esi
je 0x505682
push 0x34
push 0
push esi
call fcn.005518b0
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.004af7a0
mov eax, dword [ebx]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x505698
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.00476cf0
add esp, 0xc
jmp 0x505698
mov edx, dword [esp + 0x28]
mov ecx, dword [ebx]
call fcn.004b0380
mov edx, dword [esp + 0x48]
mov ecx, dword [ebx]
call fcn.004b0380
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 0x505835
movzx ecx, word [edi + 0xc]
test cl, 0x82
je 0x505831
test byte [edx + 0x24], 8
je 0x5056d5
mov eax, dword [edi]
test byte [eax + 4], 1
jne 0x5056d5
test cl, cl
js 0x505831
mov ecx, dword [ebp + 0xc]
mov eax, dword [edi + 0x24]
and ecx, dword [edi + 0x20]
and eax, dword [ebp + 0x10]
or ecx, eax
jne 0x505831
mov edx, dword [edi + 0x18]
test edx, edx
js 0x505831
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.004aed70
test eax, eax
je 0x505831
mov edx, dword [edi + 0x18]
xor esi, esi
cmp edx, 0x40
jl 0x505726
mov dword [esp + 0x48], SysStringLen
jmp 0x50573f
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 0x50576b
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.004762d0
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 0x505831
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 0x505803
lea eax, [edx + 7]
and eax, 0xfffffff8
mov dword [esp + 0x4c], eax
shl eax, 2
push 0
push eax
call fcn.00473b00
add esp, 8
mov dword [esp + 0x5c], eax
test eax, eax
je 0x50628c
mov edx, dword [esp + 0x30]
movzx ecx, word [edx + 0x34]
shl ecx, 2
push ecx
push dword [edx + 0x38]
push eax
call fcn.00551330
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov edx, dword [ecx + 0x38]
lea eax, [ecx + 0x40]
cmp edx, eax
je 0x5057ee
mov ecx, dword [esp + 0x60]
call fcn.00473710
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 0x505807
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 0x505839
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
mov edx, dword [ebp + 8]
add edi, 0x30
cmp edi, dword [esp + 0x50]
jb 0x505462
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
jmp 0x50585b
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 0x5058b5
mov edi, esi
xor esi, esi
mov dword [esp + 0x18], edi
jmp 0x5058c5
mov edi, ecx
mov dword [esp + 0x4c], ecx
xor esi, esi
mov dword [esp + 0x18], edi
test edi, edi
jle 0x505906
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 0x5058f5
inc dword [esp + 0x24]
inc esi
cmp esi, edi
jl 0x5058d0
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 0x505924
jl 0x505915
test edx, edx
jae 0x505924
mov eax, dword [esp + 0x24]
add eax, 0xffffffc1
add eax, ecx
mov dword [esp + 0x24], eax
jmp 0x505928
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 0x505965
call fcn.00473b00
jmp 0x50596a
call fcn.00473440
add esp, 8
mov dword [esp + 0x2c], eax
test eax, eax
je 0x50628c
push dword [esp + 0x60]
push 0
push eax
call fcn.005518b0
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 0x505ba4
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 0x505b80
movzx ecx, word [esi + 0xc]
test cl, 0x82
je 0x505b7d
mov eax, dword [ebp + 8]
test byte [eax + 0x24], 8
je 0x505a5a
mov eax, dword [esi]
test byte [eax + 4], 1
jne 0x505a5a
test cl, cl
js 0x505b7d
mov ecx, dword [ebp + 0xc]
mov eax, dword [esi + 0x24]
and ecx, dword [esi + 0x20]
and eax, dword [ebp + 0x10]
or ecx, eax
jne 0x505b7d
mov edx, dword [esi + 0x18]
test edx, edx
js 0x505b79
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.004aed70
test eax, eax
je 0x505b79
mov eax, dword [esi + 0x18]
xor edx, edx
movzx ecx, ax
mov dword [esp + 0x68], ecx
cmp eax, 0x40
jl 0x505aaf
mov esi, SysReAllocString
jmp 0x505ac2
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 0x505b75
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 0x505b14
mov esi, dword [ecx + 0xc]
mov edx, dword [ecx + 0x10]
jmp 0x505b1a
mov esi, dword [ecx + 0x10]
mov edx, dword [ecx + 0xc]
test dword [edx + 4], 0x100
jne 0x505b3d
test esi, esi
je 0x505b30
test dword [esi + 4], 0x100
jne 0x505b3b
mov ecx, ebx
call fcn.004aebc0
test eax, eax
jne 0x505b48
mov edx, esi
mov ecx, ebx
call fcn.004aebc0
test eax, eax
je 0x505b4c
mov ecx, dword [eax]
jmp 0x505b51
mov ecx, 0x599518
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 0x505b84
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 0x505a20
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 0x505bfd
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 0x505be8
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], 0x599518
inc edi
mov edx, dword [esp + 0x38]
inc esi
mov ebx, edx
cmp esi, dword [esp + 0x18]
jl 0x505bb0
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x48], edi
mov eax, dword [ebp + 8]
cmp dword [eax + 0x3c], 0
jg 0x505c45
jl 0x505c0e
cmp dword [eax + 0x38], 0
jae 0x505c45
mov esi, dword [esp + 0x44]
mov eax, 0x3f
cmp ax, word [esi + 0x22]
jge 0x505c45
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], 0x599518
inc edi
movsx eax, word [esi + 0x22]
cmp ecx, eax
jl 0x505c23
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], 0x599518
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 0x505c98
push 0
push edx
push eax
mov edx, 0x73
mov ecx, esi
call fcn.00497f80
add esp, 0xc
lea edi, [esi + 0x70]
jmp 0x505ccd
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.004cab70
mov dword [esp + 0x60], eax
test eax, eax
je 0x505d1c
mov edx, dword [esp + 0x68]
mov ecx, dword [edx]
cmp byte [ecx + 0x57], 0
je 0x505d06
push eax
mov edx, 0xfffffff7
call fcn.00498a90
add esp, 4
lea edi, [esi + 0x70]
jmp 0x505d1c
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 0x505d86
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 0x505d54
push 0
push edx
push 0x2710
mov edx, 0x4c
mov ecx, esi
call fcn.00497f80
add esp, 0xc
jmp 0x505d86
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 0x505ea7
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 0x505ddd
push 0
push 0
push 0
mov edx, 0x47
mov ecx, esi
call fcn.00497f80
mov edx, dword [esp + 0x6c]
add esp, 0xc
mov dword [esp + 0x58], eax
jmp 0x505e13
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 0x505e3f
push eax
push 0
push edx
mov edx, 0xd
mov ecx, esi
call fcn.00497f80
mov edx, dword [esp + 0x6c]
add esp, 0xc
jmp 0x505e71
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 0x505e93
push 0
push 0
push edx
mov edx, 0xe
call fcn.00497f80
add esp, 0xc
mov esi, eax
jmp 0x505efe
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 0x505ede
mov ecx, dword [esp + 0x1c]
mov esi, dword [esi + 0x74]
mov edx, dword [edx + 4]
cmp dword [ecx + 0x78], esi
jg 0x505ecc
push 0
push 0
push edx
mov edx, 0x26
call fcn.00497f80
add esp, 0xc
mov esi, eax
jmp 0x505efe
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 0x505f28
dec dword [ebx + 0x38]
mov ecx, dword [ebx + 0x38]
push 0x10
push ecx
push eax
push ebx
mov dword [esp + 0x4c], ecx
call fcn.004b7e60
mov eax, dword [esp + 0x40]
add esp, 0x10
or dword [eax + 0x2c], 0x20000
mov al, byte [ebx + 0x13]
test al, al
jne 0x505f37
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
jmp 0x505f46
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.004cd5c0
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 0x506001
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 0x505fad
push dword [esp + 0x54]
mov edx, 0xb2
push 0
push eax
call fcn.00497f80
add esp, 0xc
mov edx, eax
jmp 0x505fe3
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 0x506001
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 0x506035
mov ecx, dword [esp + 0x1c]
mov edx, 0x89
push 0
push dword [esp + 0x44]
push eax
call fcn.00497f80
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x50606b
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 0x506088
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 0x5060d0
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 0x5060bf
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x6c]
call fcn.004987a0
mov edx, dword [esp + 0x20]
add esp, 4
jmp 0x5060d0
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 0x50619a
mov ecx, dword [esp + 0x58]
test ecx, ecx
jns 0x5060ea
mov ecx, dword [edx + 0x74]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x5060f9
mov ecx, 0x5d4b70
jmp 0x506101
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.005052e0
mov edx, dword [esp + 0x28]
add esp, 0xc
mov ecx, dword [edx + 0x74]
cmp dword [edx + 0x78], ecx
jg 0x50615b
mov ecx, dword [esp + 0x1c]
mov edx, 0xb
push 0
push esi
push 0
call fcn.00497f80
mov eax, dword [esp + 0x50]
add esp, 0xc
mov edx, dword [esp + 0x1c]
and dword [eax + 0x30], 0xffffffef
jmp 0x50621c
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 0x50621c
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 0x5061cd
mov ecx, dword [esp + 0x1c]
mov edx, 5
push 0
push eax
push dword [esp + 0x68]
call fcn.00497f80
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x506202
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 0x50621c
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 0x50622a
lea esi, [eax - 1]
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x506239
mov eax, 0x5d4b70
jmp 0x506241
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 0x506264
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x506264
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 0x506272
lea ecx, [esi - 1]
mov eax, dword [edx]
cmp byte [eax + 0x57], 0
je 0x506281
mov eax, 0x5d4b70
jmp 0x506289
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 0x50629d
mov ecx, dword [ebx]
mov edx, eax
call fcn.004b0380
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret