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

Disassembly:
sub esp, 0x58
push ebx
mov ebx, dword [esp + 0x60]
xor eax, eax
push ebp
push esi
xor ebp, ebp
mov byte [esp + 0xe], 0
mov esi, dword [ebx + 8]
mov byte [esp + 0xf], 0
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x4c], eax
mov ecx, dword [esi + 0x6c]
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x50], ecx
cmp dword [esi + 0x70], ecx
jg 0x47834b
push eax
push eax
push eax
push 0xf
push esi
call fcn.00486380
add esp, 0x14
mov dword [esp + 0x50], eax
jmp 0x47836e
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4], 0xf
mov dword [eax + ecx*4 + 4], ebp
mov dword [eax + ecx*4 + 8], ebp
mov dword [eax + ecx*4 + 0xc], ebp
mov dword [eax + ecx*4 + 0x10], ebp
mov eax, dword [esp + 0x6c]
xorps xmm0, xmm0
mov edx, dword [esp + 0x78]
push edi
movlpd qword [esp + 0x60], xmm0
mov eax, dword [eax]
mov dword [esp + 0x1c], ebp
mov ecx, dword [eax + 4]
movzx eax, byte [edx + 0x3c]
mov edx, dword [edx + 0x50]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x30], edx
lea eax, [eax + eax*8]
mov edx, dword [esp + 0x64]
lea ecx, [ecx + eax*8]
mov eax, dword [ecx + 0x18]
add ecx, 8
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x14], ecx
mov edi, dword [eax + 0x18]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edi
mov dword [esp + 0x44], eax
cmp edi, eax
jae 0x478740
mov eax, dword [esp + 0x60]
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], eax
nop word [eax + eax]
test byte [edi + 0xa], 2
mov ecx, dword [edi]
mov dword [esp + 0x40], ecx
jne 0x4785eb
mov eax, dword [esp + 0x7c]
push 0
movzx eax, byte [eax + 0x3c]
push eax
push dword [esp + 0x54]
push ecx
call fcn.004b5730
add esp, 0x10
test eax, eax
je 0x4785e7
mov eax, dword [esp + 0x40]
test eax, eax
je 0x478429
push 0
push 0
push eax
push dword [ebx]
call fcn.0047df60
add esp, 0x10
jmp 0x47842b
xor eax, eax
mov ecx, dword [ebx]
mov dword [esp + 0x28], eax
mov dword [esp + 0x3c], ecx
test ebp, ebp
jne 0x478444
mov ebp, eax
mov dword [esp + 0x20], ebp
jmp 0x4785e7
test eax, eax
jne 0x478451
mov dword [esp + 0x20], ebp
jmp 0x4785e7
mov eax, dword [eax + 4]
or eax, dword [ebp + 4]
and eax, 0x20000003
cmp eax, 0x20000000
jne 0x478533
cmp byte [ebx + 0xdc], 2
jae 0x478533
push ebp
push 0x4b4a10
push ebx
call fcn.004c50a0
mov eax, dword [esp + 0x34]
push eax
push 0x4b4a10
push ebx
call fcn.004c50a0
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0
push eax
push 0x6882cc
call fcn.004bce90
mov ecx, eax
xor eax, eax
test ecx, ecx
mov dword [esp + 0x48], ecx
push 0
sete al
lea eax, [eax*2 + 0x34]
push eax
push dword [esp + 0x64]
call fcn.004aebd0
mov ebp, eax
add esp, 0x2c
mov dword [esp + 0x20], ebp
test ebp, ebp
je 0x4785e7
push 0x34
push 0
push ebp
call fcn.00656e20
or eax, 0xffffffff
mov byte [ebp], 0x9b
add esp, 0xc
mov word [ebp + 0x22], ax
cmp dword [esp + 0x28], 0
je 0x47851c
mov eax, dword [esp + 0x40]
mov ecx, 0x20800800
test eax, eax
mov dword [ebp + 8], eax
mov edx, 0x10800800
mov dword [ebp + 0x18], 1
cmovne ecx, edx
or dword [ebp + 4], ecx
jmp 0x4785e7
lea eax, [ebp + 0x34]
mov dword [ebp + 8], eax
mov word [eax], 0x30
mov dword [ebp + 0x18], 1
jmp 0x4785e7
push 0
push 0x34
push ecx
call fcn.004aebd0
add esp, 0xc
mov dword [esp + 0x24], eax
test eax, eax
je 0x4785c6
push 0x34
push 0
push eax
call fcn.00656e20
mov edx, dword [esp + 0x30]
or eax, 0xffffffff
add esp, 0xc
mov word [edx + 0x22], ax
mov eax, dword [esp + 0x28]
mov dword [edx + 0x10], eax
mov byte [edx], 0x2c
mov ecx, dword [eax + 4]
and ecx, 0x400208
or ecx, dword [edx + 4]
mov dword [edx + 4], ecx
mov eax, dword [eax + 0x18]
inc eax
mov dword [edx + 0x18], eax
mov dword [esp + 0x28], eax
mov dword [edx + 0xc], ebp
mov eax, dword [ebp + 4]
and eax, 0x400208
or eax, ecx
mov ecx, dword [esp + 0x28]
mov dword [edx + 4], eax
mov eax, dword [ebp + 0x18]
cmp eax, ecx
jl 0x4785a9
inc eax
mov dword [esp + 0x28], eax
mov ecx, eax
mov dword [edx + 0x18], eax
mov eax, dword [ebx]
mov eax, dword [eax + 0x84]
cmp ecx, eax
jle 0x4785e1
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.004b0ca0
add esp, 0xc
jmp 0x4785dd
push ebp
push dword [ebx]
call fcn.004b4a30
mov eax, dword [esp + 0x30]
push eax
push dword [ebx]
call fcn.004b4a30
add esp, 0x10
mov edx, dword [esp + 0x24]
mov ebp, edx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov eax, dword [edi + 0x14]
cmp eax, dword [ecx + 0x2c]
jne 0x47872d
test byte [edi + 0xc], 0x82
je 0x47872d
test byte [ecx + 0x24], 0x58
je 0x47861d
push ecx
push edi
call fcn.004782d0
add esp, 8
test eax, eax
je 0x478725
mov ecx, dword [esp + 0x74]
mov eax, dword [edi + 0x24]
and ecx, dword [edi + 0x20]
and eax, dword [esp + 0x78]
or ecx, eax
jne 0x478725
mov ecx, dword [edi + 0x18]
test ecx, ecx
js 0x478725
mov eax, dword [esp + 0x14]
add ecx, ecx
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
mov al, byte [eax + ecx*8 + 8]
mov byte [esp + 0x58], al
push dword [esp + 0x58]
push dword [edi]
call fcn.004be320
add esp, 8
test eax, eax
je 0x478725
mov edx, dword [edi + 0x18]
xor ebx, ebx
cmp edx, 0x40
jl 0x47867c
mov dword [esp + 0x28], connect
jmp 0x478695
mov eax, edx
xor ecx, ecx
bts ebx, eax
cmp eax, 0x20
cmovae ecx, ebx
xor ebx, ecx
cmp eax, 0x40
cmovae ecx, ebx
mov dword [esp + 0x28], ecx
cmp byte [esp + 0x12], 0
jne 0x4786c1
mov ecx, dword [esp + 0x34]
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.00458bb0
add esp, 0x10
mov byte [esp + 0x12], 1
mov eax, dword [esp + 0x28]
mov ecx, ebx
mov edx, dword [esp + 0x18]
and eax, edx
and ecx, dword [esp + 0x2c]
or ecx, eax
jne 0x47871f
mov eax, dword [esp + 0x1c]
inc eax
push eax
push dword [esp + 0x34]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x74]
push dword [eax]
call fcn.004fe2d0
add esp, 0xc
test eax, eax
jne 0x4790a7
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
or dword [esp + 0x2c], ebx
mov eax, dword [eax + 0x38]
or edx, dword [esp + 0x28]
mov dword [esp + 0x18], edx
mov dword [eax + ecx*4], edi
mov eax, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x6c]
jmp 0x478729
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
add edi, 0x30
cmp edi, dword [esp + 0x44]
jb 0x4783e0
mov edi, dword [esp + 0x2c]
jmp 0x478744
mov edi, dword [esp + 0x60]
mov esi, dword [esp + 0x30]
not edi
mov eax, dword [esp + 0x1c]
not edx
movzx eax, ax
mov dword [esp + 0x2c], edi
mov word [esi + 0x30], ax
mov word [esi + 0x18], ax
mov eax, esi
mov dword [esp + 0x18], edx
mov dword [eax + 0x2c], 0x4241
mov eax, dword [esp + 0x34]
cmp byte [eax + 0x2b], 2
je 0x47878a
and edi, dword [ecx + 0x38]
or edx, 0x80000000
and edx, dword [ecx + 0x3c]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x18], edx
movzx eax, word [eax + 0x22]
mov ecx, 0x3f
mov esi, dword [esp + 0x38]
cmp cx, ax
jge 0x4787a4
mov edi, ecx
mov dword [esp + 0x24], edi
jmp 0x4787af
movsx edi, ax
mov dword [esp + 0x24], edi
test edi, edi
jle 0x4787f4
mov ebp, dword [esp + 0x18]
xor esi, esi
mov ebx, dword [esp + 0x2c]
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, ebx
and ecx, ebp
or edx, ecx
je 0x4787e3
inc dword [esp + 0x1c]
inc esi
cmp esi, edi
jl 0x4787c0
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x20]
mov ebx, dword [esp + 0x6c]
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x3c], 0
jg 0x47881b
jl 0x478806
cmp dword [eax + 0x38], 0
jae 0x47881b
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c]
add ecx, 0xffffffc1
movsx eax, word [eax + 0x22]
add ecx, eax
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x1c]
movzx eax, ax
inc eax
mov edi, dword [ebx]
movzx eax, ax
mov dword [esp + 0x40], eax
cwde
lea ecx, [eax*4 + 7]
lea eax, [eax + eax*4]
and ecx, 0xfffffff8
add eax, 9
mov dword [esp + 0x4c], ecx
and eax, 0xfffffff8
add eax, 0x48
add eax, ecx
mov dword [esp + 0x58], eax
cdq
push edx
push eax
test edi, edi
je 0x478865
push edi
call fcn.004aebd0
mov edi, eax
add esp, 0xc
mov dword [esp + 0x28], edi
jmp 0x478873
call fcn.004c19b0
add esp, 8
mov dword [esp + 0x28], eax
mov edi, eax
test edi, edi
je 0x4790ab
push dword [esp + 0x58]
push 0
push edi
call fcn.00656e20
mov edx, dword [esp + 0x4c]
lea eax, [edi + 0x48]
mov dword [edi + 0x20], eax
add esp, 0xc
add eax, dword [esp + 0x4c]
xorps xmm0, xmm0
mov dword [edi + 8], eax
movsx ecx, dx
mov word [edi + 0x34], dx
movlpd qword [esp + 0x60], xmm0
lea eax, [eax + ecx*2]
add eax, 2
mov dword [edi + 4], eax
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x1c]
mov dword [edi + 0x1c], eax
movzx eax, cx
mov word [edi + 0x32], ax
mov eax, dword [esp + 0x30]
mov dword [eax + 0x20], edi
mov eax, dword [esp + 0x34]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x70]
mov dword [edi], str.auto_index
xor edi, edi
mov ebx, dword [eax + 0x18]
cmp ebx, dword [esp + 0x44]
jae 0x478a45
mov eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x14]
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x40], ebp
cmp eax, dword [edx + 0x2c]
jne 0x478a2c
test byte [ebx + 0xc], 0x82
je 0x478a2c
test byte [edx + 0x24], 0x58
je 0x47893e
push edx
push ebx
call fcn.004782d0
add esp, 8
test eax, eax
je 0x478a2c
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x74]
mov eax, dword [ebx + 0x24]
and ecx, dword [ebx + 0x20]
and eax, dword [esp + 0x78]
or ecx, eax
jne 0x478a2c
mov ecx, dword [ebx + 0x18]
test ecx, ecx
js 0x478a2c
mov eax, dword [edx + 0x10]
add ecx, ecx
mov eax, dword [eax + 4]
mov al, byte [eax + ecx*8 + 8]
mov byte [esp + 0x58], al
push dword [esp + 0x58]
push dword [ebx]
call fcn.004be320
add esp, 8
test eax, eax
je 0x478a2c
mov ecx, dword [ebx + 0x18]
xor edx, edx
movzx eax, cx
mov dword [esp + 0x5c], eax
cmp ecx, 0x40
jl 0x47899d
mov eax, connect
jmp 0x4789b0
xor eax, eax
bts edx, ecx
cmp ecx, 0x20
cmovae eax, edx
xor edx, eax
cmp ecx, 0x40
cmovae eax, edx
mov ebp, dword [esp + 0x40]
mov ecx, edx
and ecx, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
and eax, dword [esp + 0x3c]
or ecx, eax
jne 0x478a2c
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x28]
mov ecx, dword [ebx]
or dword [esp + 0x24], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 4]
push ecx
push esi
mov dword [esp + 0x68], ecx
mov word [eax + edi*2], dx
call fcn.004b47f0
add esp, 8
test eax, eax
je 0x4789fd
mov ecx, dword [eax]
jmp 0x478a02
mov ecx, 0x684ec8
mov eax, dword [ebp + 0x20]
mov dword [eax + edi*4], ecx
inc edi
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x40]
mov ebp, ecx
mov eax, dword [eax + 0xc]
test eax, eax
je 0x478a2c
push eax
call fcn.004b1300
add esp, 4
cmp al, 0x42
je 0x478a2c
mov byte [esp + 0x13], 1
add ebx, 0x30
cmp ebx, dword [esp + 0x44]
jb 0x478904
mov esi, dword [esp + 0x38]
mov dword [esp + 0x24], ebp
mov ebp, dword [esp + 0x20]
xor ebx, ebx
cmp dword [esp + 0x24], ebx
jle 0x478a97
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
xor edx, edx
xor ecx, ecx
mov eax, ebx
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x2c]
and ecx, dword [esp + 0x18]
or edx, ecx
je 0x478a8a
mov eax, dword [esi + 4]
mov word [eax + edi*2], bx
mov eax, dword [esi + 0x20]
mov dword [eax + edi*4], 0x684ec8
inc edi
inc ebx
cmp ebx, ebp
jl 0x478a55
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x3c], 0
jg 0x478add
jl 0x478aa9
cmp dword [eax + 0x38], 0
jae 0x478add
mov ebx, dword [esp + 0x34]
mov eax, 0x3f
mov edx, dword [esp + 0x28]
cmp ax, word [ebx + 0x22]
jge 0x478ae1
mov ecx, eax
nop
mov eax, dword [edx + 4]
mov word [eax + edi*2], cx
inc ecx
mov eax, dword [edx + 0x20]
mov dword [eax + edi*4], 0x684ec8
inc edi
movsx eax, word [ebx + 0x22]
cmp ecx, eax
jl 0x478ac0
jmp 0x478ae1
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 4]
or ecx, 0xffffffff
mov ebx, dword [esp + 0x6c]
mov word [eax + edi*2], cx
mov eax, dword [edx + 0x20]
mov ecx, dword [esp + 0x7c]
mov dword [eax + edi*4], 0x684ec8
mov eax, dword [ebx + 0x28]
mov dword [ecx + 8], eax
inc dword [ebx + 0x28]
mov ecx, dword [ecx + 8]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x4c], ecx
inc eax
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x478b32
push 0
push eax
push dword [esp + 0x54]
push 0x74
push esi
call fcn.00486380
mov edx, dword [esp + 0x3c]
add esp, 0x14
jmp 0x478b6e
mov ebp, dword [esp + 0x4c]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov esi, dword [esp + 0x38]
mov dword [eax + ecx*4 + 4], ebp
mov ebp, dword [esp + 0x1c]
inc ebp
mov dword [eax + ecx*4], 0x74
mov dword [eax + ecx*4 + 8], ebp
mov ebp, dword [esp + 0x20]
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebx + 8]
push edx
push ebx
mov dword [esp + 0x54], eax
call fcn.004c08b0
mov edx, eax
add esp, 8
test edx, edx
je 0x478bc3
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax]
cmp byte [ecx + 0x57], 0
je 0x478bad
cmp dword [ecx + 0x210], 0
jne 0x478bc3
add dword [edx], 0xffffffff
jne 0x478bc3
push edx
push dword [edx + 0xc]
call fcn.004aecf0
add esp, 8
jmp 0x478bc3
mov eax, dword [eax + 0x6c]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 0x68]
mov byte [eax + ecx*4 - 0x13], 0xf8
mov dword [eax + ecx*4 - 4], edx
mov eax, dword [ebx]
test dword [eax + 0x50], 0x80000
jne 0x478c46
cmp byte [esp + 0x13], 0
je 0x478c46
mov eax, dword [esp + 0x70]
push dword [esp + 0x7c]
push dword [eax]
push ebx
call fcn.004eaa00
mov edx, dword [ebx + 0x2c]
add esp, 0xc
mov eax, dword [esp + 0x7c]
inc edx
mov dword [ebx + 0x2c], edx
mov dword [eax + 0x34], edx
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x478c13
push 0
push edx
push 0x2710
push 0x4d
push esi
call fcn.00486380
add esp, 0x14
jmp 0x478c46
mov ebp, dword [esp + 0x20]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4], 0x4d
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 eax, dword [esp + 0x14]
test byte [eax + 0x28], 0x20
je 0x478d4b
mov ecx, dword [esi + 0x6c]
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], ecx
cmp dword [esi + 0x70], ecx
jg 0x478c82
push 0
push 0
push 0
push 0x47
push esi
call fcn.00486380
mov edx, dword [esp + 0x58]
add esp, 0x14
mov dword [esp + 0x48], eax
jmp 0x478cb5
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
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 + 0x14]
mov ecx, dword [esi + 0x6c]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x70], eax
cmp dword [esi + 0x70], ecx
jg 0x478cd9
push eax
push 0
push edx
push 0xb
push esi
call fcn.00486380
add esp, 0x14
jmp 0x478d0c
mov ebp, dword [esp + 0x20]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x70]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esi + 0x6c]
mov dword [esp + 0x70], edx
cmp dword [esi + 0x70], edx
jg 0x478d32
mov edx, dword [esp + 0x44]
push 0
push 0
push edx
push 0xc
push esi
call fcn.00486380
add esp, 0x14
mov dword [esp + 0x70], eax
jmp 0x478dab
lea eax, [edx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x68]
mov edx, dword [esp + 0x44]
mov dword [eax + ecx*4], 0xc
jmp 0x478d8f
mov eax, dword [esp + 0x7c]
mov edx, dword [esi + 0x6c]
mov dword [esp + 0x70], edx
mov eax, dword [eax + 4]
mov dword [esp + 0x60], eax
cmp dword [esi + 0x70], edx
jg 0x478d78
push 0
push 0
push eax
push 0x24
push esi
call fcn.00486380
add esp, 0x14
mov dword [esp + 0x70], eax
jmp 0x478dab
lea eax, [edx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x68]
mov edx, dword [esp + 0x60]
mov dword [eax + ecx*4], 0x24
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
test ebp, ebp
je 0x478dd1
dec dword [ebx + 0x38]
mov eax, dword [ebx + 0x38]
push 0x10
push eax
push ebp
push ebx
mov dword [esp + 0x60], eax
call fcn.004b4d40
mov ecx, dword [esp + 0x40]
add esp, 0x10
or dword [ecx + 0x2c], 0x20000
mov al, byte [ebx + 0x13]
test al, al
jne 0x478de0
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
jmp 0x478def
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0xa4]
push 0
push 0
push 0
push 0
push eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x90]
push dword [eax + 4]
push dword [esp + 0x40]
push ebx
call fcn.004bc4e0
mov edx, dword [esp + 0x9c]
add esp, 0x20
mov dword [esp + 0x44], eax
mov edx, dword [edx + 0x34]
test edx, edx
je 0x478e84
mov ecx, dword [esp + 0x30]
movzx ecx, word [ecx + 0x18]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x478e51
push dword [esp + 0x4c]
push eax
push 0
push edx
push 0xb7
push esi
call fcn.0046c970
add esp, 0x18
jmp 0x478e84
mov ebx, dword [esp + 0x6c]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x44]
mov dword [eax + ecx*4 + 0xc], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0xfdb7
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0x10], edx
mov eax, dword [esp + 0x7c]
mov ecx, dword [esi + 0x6c]
mov eax, dword [eax + 8]
mov dword [esp + 0x6c], eax
cmp dword [esi + 0x70], ecx
jg 0x478eaf
mov edx, dword [esp + 0x38]
push 0
push edx
push eax
push 0x8a
push esi
call fcn.00486380
add esp, 0x14
jmp 0x478ee2
mov edx, dword [esp + 0x6c]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x38]
mov dword [eax + ecx*4], 0x8a
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x478ef9
lea ecx, [eax + eax*4]
mov edx, 0x10
mov eax, dword [esi + 0x68]
mov word [eax + ecx*4 - 0x12], dx
test ebp, ebp
je 0x478f24
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x50]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x478f1b
push edx
push esi
push ecx
call fcn.0049ce60
add esp, 0xc
jmp 0x478f24
mov ecx, dword [ecx + 0x40]
mov eax, dword [esi + 0x6c]
mov dword [ecx + edx*4], eax
mov edx, dword [esp + 0x14]
test byte [edx + 0x28], 0x20
je 0x478fd0
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x478f41
mov ecx, 0x718388
jmp 0x478f4e
mov eax, dword [esp + 0x48]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x68]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x44]
add eax, edi
mov edi, dword [esp + 0x70]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x7c]
push dword [eax + 8]
push dword [edx + 0x20]
push dword [eax + 4]
push edi
push ebx
call fcn.004f0630
mov ecx, dword [esi + 0x6c]
add esp, 0x14
cmp dword [esi + 0x70], ecx
jg 0x478f97
push 0
push edi
push 0
push 9
push esi
call fcn.00486380
mov ecx, dword [esp + 0x28]
add esp, 0x14
and dword [ecx + 0x28], 0xffffffdf
jmp 0x479045
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4], 9
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x14]
and dword [ecx + 0x28], 0xffffffdf
jmp 0x479045
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x70]
mov ecx, dword [esi + 0x6c]
mov eax, dword [eax + 4]
lea edx, [edi + 1]
mov dword [esp + 0x7c], eax
cmp dword [esi + 0x70], ecx
jg 0x478ffb
push 0
push edx
push eax
push 0x27
push esi
call fcn.00486380
add esp, 0x14
jmp 0x47902e
mov ebp, dword [esp + 0x7c]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 4], ebp
mov ebp, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x27
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x479045
lea ecx, [eax + eax*4]
mov edx, 3
mov eax, dword [esi + 0x68]
mov word [eax + ecx*4 - 0x12], dx
mov eax, dword [esi]
mov edx, dword [esi + 0x6c]
cmp byte [eax + 0x57], 0
je 0x479057
mov eax, 0x718388
jmp 0x479060
mov eax, dword [esi + 0x68]
lea ecx, [edi + edi*4]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x38]
mov dword [eax + 8], edx
test ecx, ecx
je 0x47907f
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x47907f
movzx eax, al
mov dword [ebx + eax*4 + 0xa4], ecx
inc byte [ebx + 0x13]
mov eax, dword [esi]
mov edx, dword [esi + 0x6c]
cmp byte [eax + 0x57], 0
je 0x479094
mov eax, 0x718388
mov dword [eax + 8], edx
jmp 0x4790ab
mov eax, dword [esp + 0x54]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 8], edx
lea eax, [eax + ecx*4]
jmp 0x4790ab
mov ebx, dword [esp + 0x6c]
pop edi
test ebp, ebp
je 0x4790bb
push ebp
push dword [ebx]
call fcn.004b4a30
add esp, 8
pop esi
pop ebp
pop ebx
add esp, 0x58
ret