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

Disassembly:
sub esp, 0x1ec
push ebx
mov ebx, dword [esp + 0x1f4]
push ebp
push esi
mov esi, dword [esp + 0x200]
mov ebp, dword [ebx + 0xc]
push edi
mov dword [esp + 0x44], 0
cmp word [esi], 0x20
jbe 0x4a71d6
push 0x20
push str.at_most__d_tables_in_a_join
push ebx
call fcn.0047f3c0
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1ec
ret
mov ecx, 0x21
xor eax, eax
lea edi, [esp + 0x178]
push ebx
rep stosd dword es:[edi], eax
lea eax, [esp + 0x54]
push eax
call fcn.004a7e90
mov ecx, dword [esp + 0x210]
push 0x41
lea edx, [esp + 0x5c]
push ecx
push edx
call fcn.004a7ef0
movsx eax, word [esi]
shl eax, 6
add eax, 0x58
push eax
call fcn.0047f140
mov edi, eax
mov eax, dword [0x542cac]
add esp, 0x18
mov dword [esp + 0x4c], edi
test eax, eax
jne 0x4a72c8
push ebp
mov dword [edi], ebx
mov dword [edi + 4], esi
call fcn.00485000
mov dword [edi + 0x10], eax
mov eax, dword [esp + 0x20c]
add esp, 4
test eax, eax
je 0x4a7270
cmp word [esi], 0
je 0x4a7260
push eax
call fcn.0049ad00
add esp, 4
test eax, eax
je 0x4a7270
mov eax, dword [esp + 0x208]
mov ecx, dword [edi + 0x10]
push 1
push ecx
push eax
push ebx
call fcn.0049c830
add esp, 0x10
xor ebx, ebx
cmp word [esi], bx
jle 0x4a72a9
lea edx, [esi + 0x1a]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x178]
movsx ecx, word [eax]
push ecx
push edx
call fcn.004a8020
movsx eax, word [esi]
mov edx, dword [esp + 0x18]
add esp, 8
inc ebx
add edx, 0x24
cmp ebx, eax
mov dword [esp + 0x10], edx
jl 0x4a727e
lea ecx, [esp + 0x50]
lea edx, [esp + 0x178]
push ecx
push edx
push esi
call fcn.004a8150
mov eax, dword [0x542cac]
add esp, 0xc
test eax, eax
je 0x4a72e8
lea eax, [esp + 0x50]
push eax
call fcn.004a7eb0
push edi
call fcn.0047f1c0
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1ec
ret
or eax, 0xffffffff
xor ecx, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], eax
movsx eax, word [esi]
add edi, 0x18
cmp eax, ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], edi
mov ebx, edi
jle 0x4a74b1
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x204]
xor ecx, ecx
cmp edi, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x34], ecx
lea ecx, [edi + edi*8]
mov dword [esp + 0x38], 0xa2879f2e
mov dword [esp + 0x3c], 0x547d42ae
lea esi, [edx + ecx*4 + 4]
jge 0x4a740e
movsx eax, word [esi + 0x16]
lea ecx, [esp + 0x178]
push eax
push ecx
call fcn.004a7ff0
mov edx, dword [esp + 0x24]
add esp, 8
test edx, eax
jne 0x4a7379
mov eax, dword [esp + 0x10]
cmp edi, eax
jne 0x4a73f8
inc eax
mov dword [esp + 0x10], eax
jmp 0x4a73f8
test edi, edi
jne 0x4a738c
mov eax, dword [esp + 0x20c]
test eax, eax
je 0x4a738c
mov eax, dword [eax]
jmp 0x4a738e
xor eax, eax
lea ecx, [esp + 0x18]
lea edx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x30]
push edx
mov edx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x20c]
push eax
push edx
lea eax, [esp + 0x64]
push esi
push eax
push ecx
call fcn.004a88f0
fcom qword [esp + 0x58]
add esp, 0x20
fnstsw ax
test ah, 1
je 0x4a73e6
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], edx
fstp qword [esp + 0x38]
mov dword [esp + 0x20], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x14], edi
jmp 0x4a73e8
fstp st(0)
test byte [esi + 0x14], 4
jne 0x4a740e
test edi, edi
jle 0x4a73f8
test byte [esi - 0x10], 4
jne 0x4a740e
mov edx, dword [esp + 0x204]
inc edi
add esi, 0x24
movsx eax, word [edx]
cmp edi, eax
jl 0x4a7349
mov eax, dword [esp + 0x20]
test ah, 0x10
je 0x4a7424
mov ecx, dword [esp + 0x20c]
mov dword [ecx], 0
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
and esi, eax
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x24]
xor ecx, ecx
cmp eax, ecx
mov dword [esp + 0x30], esi
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x34], edx
mov dword [ebx + 0x3c], ecx
mov dword [ebx + 0x38], ecx
je 0x4a7461
mov eax, dword [esp + 0x200]
mov ecx, dword [eax + 0x1c]
mov dword [ebx + 0x18], ecx
mov ecx, dword [eax + 0x1c]
inc ecx
mov dword [eax + 0x1c], ecx
jmp 0x4a7468
mov dword [ebx + 0x18], 0xffffffff
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x204]
lea ecx, [esp + 0x178]
lea edx, [esi + esi*8]
movsx eax, word [edi + edx*4 + 0x1a]
push eax
push ecx
call fcn.004a7ff0
mov ecx, dword [esp + 0x24]
mov dword [ebx], esi
not eax
and ecx, eax
add esp, 8
movsx eax, word [edi]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x40]
inc ecx
add ebx, 0x40
cmp ecx, eax
mov dword [esp + 0x40], ecx
jl 0x4a7311
mov eax, dword [esp + 0x30]
test ah, 0x40
je 0x4a74cb
mov eax, dword [esp + 0x20c]
test eax, eax
je 0x4a74cb
mov dword [eax], 0
mov edx, dword [esp + 0x200]
push 0xffffffffffffffff
push edx
call fcn.0048aee0
mov eax, dword [esp + 0x20c]
mov esi, dword [esp + 0x50]
add esp, 8
mov dword [esp + 0x40], 0
cmp word [eax], 0
jle 0x4a75cb
mov eax, dword [esi]
mov edx, dword [esp + 0x204]
mov ebx, dword [esi + 0x18]
lea ecx, [eax + eax*8]
mov eax, dword [edx + ecx*4 + 0x10]
mov dword [esp + 0x20], eax
lea edi, [edx + ecx*4 + 4]
mov cl, byte [eax + 0x1e]
test cl, cl
jne 0x4a75ad
mov ecx, dword [eax + 0x18]
test ecx, ecx
jne 0x4a75ad
mov eax, dword [esi + 4]
test ah, 8
jne 0x4a7546
movsx ecx, word [edi + 0x16]
mov eax, dword [esp + 0x20]
push eax
push ecx
push ebp
call fcn.0049d7b0
add esp, 0xc
movsx edx, word [edi + 0x16]
mov edi, dword [esi + 0x10]
mov dword [esi + 0x14], edx
test edi, edi
je 0x4a757a
xor eax, eax
push 0
mov al, byte [edi + 0x1a]
push eax
push 0x31
push ebp
call fcn.00484ee0
mov edx, dword [edi + 0x14]
lea ecx, [edi + 0x24]
push 0xfffffffffffffffa
push ecx
push edx
push ebx
push 0xf
push ebp
call fcn.00484fc0
add esp, 0x28
mov eax, dword [esi + 4]
test ah, 8
je 0x4a7593
mov eax, dword [edi + 4]
inc eax
push eax
push ebx
push 0x6a
push ebp
call fcn.00484ee0
add esp, 0x10
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x200]
xor ecx, ecx
mov cl, byte [edx + 0x1d]
push ecx
push eax
call fcn.0048aee0
add esp, 8
mov ecx, dword [esp + 0x204]
mov eax, dword [esp + 0x40]
inc eax
add esi, 0x40
movsx edx, word [ecx]
cmp eax, edx
mov dword [esp + 0x40], eax
jl 0x4a74fa
push ebp
call fcn.00485070
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x4c]
add esp, 4
mov dword [esp + 0x1c], 0xffffffff
mov dword [edi + 8], eax
mov eax, dword [esp + 0x204]
mov dword [esp + 0x40], 0
cmp word [eax], 0
jle 0x4a7e62
mov eax, dword [esi]
mov edx, dword [esp + 0x204]
push ebp
lea ecx, [eax + eax*8]
lea eax, [edx + ecx*4 + 4]
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x24], eax
mov edx, dword [esi + 0x18]
movsx eax, word [eax + 0x16]
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 4]
mov ebx, eax
mov dword [esp + 0x14], ecx
shr eax, 0xb
shr ebx, 0xd
and eax, 1
mov dword [esp + 0x18], edx
and ebx, 1
mov dword [esp + 0x30], eax
call fcn.00485000
mov edi, eax
push ebp
mov dword [esi + 0x1c], edi
call fcn.00485000
mov dword [esi + 0x20], eax
mov dword [esp + 0x4c], eax
mov eax, dword [esi]
add esp, 8
test eax, eax
jle 0x4a76b0
mov eax, dword [esp + 0x20]
test byte [eax - 0x10], 4
je 0x4a76b0
mov eax, dword [esp + 0x200]
mov ecx, dword [eax + 0x20]
test ecx, ecx
jne 0x4a767f
mov dword [eax + 0x20], 1
mov eax, dword [esp + 0x200]
push 0
push 0
push 0x7b
mov ecx, dword [eax + 0x20]
push ebp
mov dword [esi + 0xc], ecx
mov ecx, dword [eax + 0x20]
inc ecx
mov dword [eax + 0x20], ecx
call fcn.00484ee0
mov edx, dword [esi + 0xc]
push 1
push edx
push 0x7d
push ebp
call fcn.00484ee0
add esp, 0x20
mov eax, dword [esi + 4]
test al, 1
je 0x4a7705
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x38]
push 0
push 3
push eax
push 0xffffffffffffffff
lea ecx, [esp + 0x60]
push ebx
push ecx
call fcn.004a8040
mov edx, dword [esp + 0x218]
push esi
push edi
push eax
push edx
call fcn.004a8fc0
push edi
push 1
push 0x24
push ebp
call fcn.00484ee0
push edi
push ebx
push 0x2d
push ebp
call fcn.00484ee0
add esp, 0x48
mov dword [esi + 0x28], 0x17
jmp 0x4a7d40
test al, 2
je 0x4a78cf
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
push 0
push 0x24
push eax
push 0xffffffffffffffff
lea edx, [esp + 0x60]
push ecx
push edx
mov dword [esp + 0x28], 0x17
call fcn.004a8040
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x34]
push 0
push 0x18
push eax
push 0xffffffffffffffff
lea edx, [esp + 0x78]
push ecx
push edx
call fcn.004a8040
add esp, 0x30
mov dword [esp + 0x14], eax
test ebx, ebx
je 0x4a7768
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4a77d6
mov ecx, dword [esp + 0x200]
mov edx, eax
mov eax, dword [edx]
mov dword [esp + 0x2c], eax
mov eax, dword [eax + 0xc]
push eax
push ecx
call fcn.0049bba0
mov edx, dword [esp + 0x34]
add esp, 8
mov al, byte [edx]
cmp al, 0x4b
je 0x4a779e
cmp al, 0x4a
je 0x4a779e
xor eax, eax
jmp 0x4a77a3
mov eax, 1
push edi
push eax
push 0x77
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x48]
mov ecx, ebx
neg ecx
sbb ecx, ecx
push edi
and ecx, 0xffffffe7
push eax
add ecx, 0x7f
push ecx
push ebp
call fcn.00484ee0
mov edx, dword [esp + 0x38]
push edx
push esi
call fcn.004a8f00
add esp, 0x28
jmp 0x4a77f2
mov eax, dword [esp + 0x38]
mov ecx, ebx
neg ecx
sbb ecx, ecx
push edi
and ecx, 0xffffffb8
push eax
add ecx, 0x7e
push ecx
push ebp
call fcn.00484ee0
add esp, 0x10
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a7871
mov ecx, dword [esp + 0x200]
mov edx, eax
mov eax, dword [edx]
mov dword [esp + 0x2c], eax
mov eax, dword [eax + 0xc]
push eax
push ecx
call fcn.0049bba0
mov eax, dword [esp + 0x208]
push 1
mov edx, dword [eax + 0x20]
mov dword [esi + 8], edx
mov ecx, dword [eax + 0x20]
inc ecx
mov dword [eax + 0x20], ecx
mov eax, dword [esi + 8]
push eax
push 0x7d
push ebp
call fcn.00484ee0
mov ecx, dword [esp + 0x44]
add esp, 0x18
mov al, byte [ecx]
cmp al, 0x4c
je 0x4a7854
cmp al, 0x4a
je 0x4a7854
mov eax, ebx
neg eax
sbb eax, eax
and eax, 2
add eax, 0x4a
jmp 0x4a785f
mov eax, ebx
neg eax
sbb eax, eax
and al, 0xfe
add eax, 0x4d
mov edx, dword [esp + 0x14]
mov dword [esp + 0x10], eax
push edx
push esi
call fcn.004a8f00
add esp, 8
push ebp
call fcn.00485070
mov ecx, dword [esp + 0x3c]
add esp, 4
neg ebx
sbb ebx, ebx
mov dword [esi + 0x30], eax
mov eax, dword [esp + 0x10]
and ebx, 0xffffffc5
add ebx, 0x6f
cmp eax, 0x17
mov dword [esi + 0x28], ebx
mov dword [esi + 0x2c], ecx
je 0x4a7d40
mov edx, ecx
push 0
push edx
push 0x26
push ebp
call fcn.00484ee0
mov eax, dword [esi + 8]
push 0
push eax
push 1
push ebp
call fcn.00484ee0
mov ecx, dword [esp + 0x30]
push edi
push 0x6e
push ecx
push ebp
call fcn.00484ee0
add esp, 0x30
jmp 0x4a7d40
test al, 0x20
je 0x4a7c13
mov edx, dword [esi + 0x34]
mov ecx, eax
shr eax, 9
shr ecx, 8
and eax, 1
and ecx, 1
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], ecx
push edi
lea ecx, [esp + 0x54]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x204]
push eax
push ecx
push esi
push edx
call fcn.004a9090
mov eax, dword [esp + 0x2c]
add esp, 0x14
test eax, eax
mov dword [esp + 0x28], 0
jle 0x4a7946
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
push 0
dec eax
push eax
push 0x61
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x34]
add esp, 0x10
dec eax
mov dword [esp + 0x24], eax
jne 0x4a7928
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a79b9
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
push ecx
push 0x18
mov edx, dword [ecx + 8]
mov ecx, dword [esp + 0x24]
push ecx
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0x44]
push eax
lea eax, [esp + 0x60]
push edx
push eax
call fcn.004a8040
mov edx, dword [esp + 0x218]
mov dword [esp + 0x60], eax
mov eax, dword [eax]
mov dword [esp + 0x3c], eax
mov ecx, dword [eax + 0xc]
push ecx
push edx
call fcn.0049bba0
mov ecx, dword [esp + 0x44]
xor eax, eax
mov dl, byte [ecx]
cmp dl, 0x4b
mov edx, dword [esp + 0x68]
sete al
push edx
push esi
mov dword [esp + 0x4c], eax
call fcn.004a8f00
add esp, 0x28
mov dword [esp + 0x30], 0x3f
jmp 0x4a79dc
mov ecx, dword [esp + 0x18]
xor eax, eax
test ecx, ecx
setle al
dec eax
mov dword [esp + 0x24], 1
and eax, 0x28
add eax, 0x17
cmp eax, 0x17
mov dword [esp + 0x30], eax
je 0x4a7a2e
mov eax, dword [esp + 0x200]
mov edx, dword [esp + 0x10]
push edx
push edi
mov ecx, dword [eax + 0x20]
mov dword [esi + 8], ecx
mov ecx, dword [eax + 0x20]
inc ecx
mov dword [eax + 0x20], ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
add eax, ecx
push eax
push ebp
call fcn.004a8f60
add esp, 0x10
test ebx, ebx
je 0x4a7a24
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
neg eax
sbb eax, eax
push edi
and al, 0xdf
push edx
add eax, 0x66
push eax
jmp 0x4a7a3a
mov ecx, dword [esi + 8]
push 1
push ecx
push 0x7d
jmp 0x4a7a3a
test ebx, ebx
je 0x4a7a43
mov edx, dword [esp + 0x14]
push edi
push edx
push 0x36
push ebp
call fcn.00484ee0
add esp, 0x10
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4a7aae
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
push ecx
push 0x24
mov eax, dword [ecx + 8]
mov ecx, dword [esp + 0x24]
push ecx
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x44]
push eax
lea eax, [esp + 0x60]
push edx
push eax
call fcn.004a8040
mov edx, dword [esp + 0x218]
mov dword [esp + 0x60], eax
mov eax, dword [eax]
mov dword [esp + 0x40], eax
mov ecx, dword [eax + 0xc]
push ecx
push edx
call fcn.0049bba0
mov ecx, dword [esp + 0x48]
xor eax, eax
mov dl, byte [ecx]
cmp dl, 0x4d
mov edx, dword [esp + 0x68]
sete al
push edx
push esi
mov dword [esp + 0x50], eax
call fcn.004a8f00
add esp, 0x28
jmp 0x4a7ab6
mov dword [esp + 0x28], 1
mov eax, dword [esp + 0x18]
test eax, eax
jg 0x4a7ade
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x4a7ade
test ebx, ebx
je 0x4a7ad4
mov dword [esp + 0x30], 0x17
jmp 0x4a7b49
mov eax, dword [esp + 0x14]
push edi
push eax
push 0x7e
jmp 0x4a7b40
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x18]
push ecx
add edx, eax
push edi
push edx
push ebp
call fcn.004a8f60
add esp, 0x10
test ebx, ebx
je 0x4a7b2b
mov eax, dword [esp + 0x200]
push 1
mov ecx, dword [eax + 0x20]
mov dword [esi + 8], ecx
mov edx, dword [eax + 0x20]
inc edx
mov dword [eax + 0x20], edx
mov edx, dword [esi + 8]
push edx
push 0x7d
push ebp
call fcn.00484ee0
add esp, 0x10
mov dword [esp + 0x30], 0x27
jmp 0x4a7b49
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
neg ecx
sbb ecx, ecx
push edi
and ecx, 0x7a
push eax
add ecx, 5
push ecx
push ebp
call fcn.00484ee0
add esp, 0x10
push ebp
call fcn.00485070
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
add esp, 4
cmp eax, 0x17
je 0x4a7bab
mov edx, dword [esi + 8]
push 0
push edx
push 1
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
push edi
push eax
push ecx
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x44]
add esp, 0x20
test eax, eax
je 0x4a7b8d
test ebx, ebx
je 0x4a7b99
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x4a7bab
test ebx, ebx
je 0x4a7bab
push 0xfffffffffffffffe
push 0x51a50c
push 0xffffffffffffffff
push ebp
call fcn.00485190
add esp, 0x10
mov edi, dword [esp + 0x14]
push 0
push edi
push 7
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x54]
add eax, ecx
push edx
push eax
push 0x21
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x4c]
add esp, 0x20
test eax, eax
jne 0x4a7bfa
push 0
push edi
push 0x37
push ebp
call fcn.00484ee0
mov edx, dword [esp + 0x48]
push 0
push edx
push 0x7f
push ebp
call fcn.00484ee0
add esp, 0x20
neg ebx
mov eax, dword [esp + 0x34]
mov dword [esi + 0x2c], edi
sbb ebx, ebx
and ebx, 0xffffffc5
add ebx, 0x6f
mov dword [esi + 0x28], ebx
jmp 0x4a7d3d
test al, 0x10
je 0x4a7d21
mov ecx, dword [esi + 0x34]
mov edx, dword [esp + 0x1c]
push edi
lea eax, [esp + 0x54]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x204]
push edx
push eax
push esi
push ecx
call fcn.004a9090
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
push edx
push edi
push eax
push ebp
call fcn.004a8f60
mov ecx, dword [esi + 8]
push 0
push ecx
push 0x7d
push ebp
call fcn.00484ee0
add esp, 0x34
test ebx, ebx
mov ebx, dword [esp + 0x14]
push edi
push ebx
je 0x4a7c97
push 0x45
push ebp
call fcn.00484ee0
mov edx, dword [esi + 8]
push 0
push edx
push 1
push ebp
call fcn.00484ee0
push edi
push ebx
push 0x27
push ebp
mov dword [esp + 0x54], eax
call fcn.00484ee0
add esp, 0x30
mov dword [esi + 0x28], 0x34
jmp 0x4a7cd0
push 0x7f
push ebp
call fcn.00484ee0
mov eax, dword [esi + 8]
push 0
push eax
push 1
push ebp
call fcn.00484ee0
push 0xfffffffffffffffe
push 0x51a50c
push edi
push ebx
push 0x3f
push ebp
mov dword [esp + 0x5c], eax
call fcn.00484fc0
mov ebx, dword [esp + 0x4c]
add esp, 0x38
mov dword [esi + 0x28], 0x6f
push 0
push ebx
push 7
push ebp
call fcn.00484ee0
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x30]
push ecx
push edx
push 0x21
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x4c]
add esp, 0x20
test eax, eax
jne 0x4a7d15
push 0
push ebx
push 0x37
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x48]
push 0
push eax
push 0x7f
push ebp
call fcn.00484ee0
add esp, 0x20
mov ecx, dword [esp + 0x24]
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x30], ecx
jmp 0x4a7d40
mov eax, dword [esp + 0x38]
push edi
push eax
push 0x7e
push ebp
mov dword [esi + 0x28], 0x6f
mov dword [esi + 0x2c], eax
call fcn.00484ee0
add esp, 0x10
inc eax
mov dword [esi + 0x30], eax
mov edx, dword [esp + 0x38]
lea eax, [esp + 0x178]
push edx
push eax
call fcn.004a7ff0
mov edx, dword [esp + 0x24]
add esp, 8
not eax
and edx, eax
mov eax, dword [esp + 0x54]
test eax, eax
mov dword [esp + 0x1c], edx
jle 0x4a7dc5
mov ecx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x200]
mov dword [esp + 0x2c], eax
lea edi, [ecx + 0xc]
test byte [edi], 6
jne 0x4a7db7
mov edx, dword [esp + 0x1c]
mov eax, dword [edi + 0xc]
test edx, eax
jne 0x4a7db7
mov ecx, dword [esi + 0xc]
mov eax, dword [edi - 0xc]
test ecx, ecx
je 0x4a7da0
mov cl, byte [eax + 3]
and cl, 1
cmp cl, 1
jne 0x4a7db7
mov edx, dword [esp + 0x44]
push 1
push edx
push eax
push ebx
call fcn.0049c830
mov al, byte [edi]
add esp, 0x10
or al, 4
mov byte [edi], al
mov eax, dword [esp + 0x2c]
add edi, 0x1c
dec eax
mov dword [esp + 0x2c], eax
jne 0x4a7d7b
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4a7e40
push ebp
call fcn.00485070
push 0
push 1
push 0x31
push ebp
mov dword [esi + 0x24], eax
call fcn.00484ee0
mov eax, dword [esi + 0xc]
push 1
push eax
push 0x7d
push ebp
call fcn.00484ee0
mov eax, dword [esp + 0x78]
add esp, 0x24
xor ebx, ebx
test eax, eax
jle 0x4a7e40
mov ecx, dword [esp + 0x5c]
lea edi, [ecx + 0xc]
test byte [edi], 6
jne 0x4a7e34
mov edx, dword [esp + 0x1c]
mov eax, dword [edi + 0xc]
test edx, eax
jne 0x4a7e34
mov eax, dword [esp + 0x44]
mov ecx, dword [edi - 0xc]
mov edx, dword [esp + 0x200]
push 1
push eax
push ecx
push edx
call fcn.0049c830
mov al, byte [edi]
add esp, 0x10
or al, 4
mov byte [edi], al
mov eax, dword [esp + 0x54]
inc ebx
add edi, 0x1c
cmp ebx, eax
jl 0x4a7e03
mov ecx, dword [esp + 0x204]
mov eax, dword [esp + 0x40]
inc eax
add esi, 0x40
movsx edx, word [ecx]
cmp eax, edx
mov dword [esp + 0x40], eax
jl 0x4a7600
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
lea ecx, [esp + 0x50]
push ecx
mov dword [edi + 0xc], eax
call fcn.004a7eb0
add esp, 4
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1ec
ret