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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc8
mov eax, dword [0x51d06c]
xor eax, esp
mov dword [esp + 0xc4], eax
mov eax, dword [ebp + 0x14]
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, ecx
mov dword [esp + 0x80], edx
mov edx, dword [ebp + 8]
or ecx, 0xffffffff
mov dword [esp + 0x6c], eax
mov dword [esp + 0x34], edi
cmp dword [edi + 0x24], 0
mov eax, dword [edi]
mov dword [esp + 0x48], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x50], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0x8c], 0
mov byte [esp + 0x1b], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x60], eax
jne 0x478144
cmp byte [eax + 0x49], 0
jne 0x478144
mov dword [esp + 0x2c], 0
test edx, edx
je 0x476cf1
test dword [edx + 8], 0x200
je 0x476cf1
cmp dword [edx + 0x34], 0
jne 0x476cf1
mov ecx, dword [edx]
mov dword [esp + 0x64], ecx
mov ecx, eax
push 1
mov dword [edx], 0
call fcn.0047fcb0
add esp, 4
mov dword [esp + 0x48], 0
mov edx, dword [esp + 0x80]
mov ecx, edi
call fcn.0046ed40
mov esi, eax
mov dword [esp + 0x14], esi
test esi, esi
je 0x478140
mov ecx, dword [esi + 0x48]
mov edx, 0xfff0bdc0
mov dword [esp + 0x24], edx
test ecx, ecx
je 0x476d3d
mov eax, dword [esp + 0x60]
xor edx, edx
mov dword [esp + 0x24], edx
mov eax, dword [eax + 0x10]
add eax, 0xc
cmp dword [eax], ecx
je 0x476d3d
lea eax, [eax + 0x10]
inc edx
cmp dword [eax], ecx
jne 0x476d31
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x60]
mov ecx, edx
add ecx, ecx
mov edx, 0x12
mov eax, dword [eax + 0x10]
push dword [eax + ecx*8]
mov ecx, edi
push 0
push dword [esi]
call fcn.00466f70
add esp, 0xc
test eax, eax
jne 0x478140
mov eax, dword [esi + 0x24]
xor edx, edx
shr eax, 5
and eax, 0xffffff01
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], eax
mov eax, dword [edi]
test dword [eax + 0x1c], 0x40000
je 0x476d95
mov edx, esi
mov ecx, edi
call fcn.0048a9e0
mov edx, eax
mov ecx, edx
test edx, edx
je 0x476db5
nop dword [eax + eax]
cmp byte [ecx + 8], 0x74
jne 0x476dae
movzx eax, byte [ecx + 9]
or dword [esp + 0x5c], eax
mov ecx, dword [ecx + 0x20]
test ecx, ecx
jne 0x476da0
xor eax, eax
mov ecx, edi
cmp dword [esp + 0x5c], eax
cmovne eax, edx
mov edx, esi
mov dword [esp + 0x78], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x70], eax
call fcn.0046a720
test eax, eax
jne 0x478140
push dword [esp + 0x5c]
mov edx, esi
mov ecx, edi
call fcn.0046edd0
add esp, 4
test eax, eax
jne 0x478140
mov ecx, edi
call fcn.00482ca0
mov esi, eax
mov dword [esp + 0x20], esi
test esi, esi
je 0x478140
cmp byte [edi + 0x12], 0
jne 0x476e14
or dword [esi + 0x94], 0x20
cmp dword [esp + 0x48], 0
jne 0x476e26
cmp dword [esp + 0x78], 0
jne 0x476e26
xor edx, edx
jmp 0x476e2b
mov edx, 1
push dword [esp + 0x24]
mov ecx, edi
call fcn.0046d770
add esp, 4
cmp dword [esp + 0x1c], 0
jne 0x476e61
push dword [esp + 0x24]
mov edx, dword [esp + 0x18]
mov ecx, edi
push dword [ebp + 0x10]
push dword [esp + 0x50]
call fcn.0047a090
add esp, 0xc
test eax, eax
jne 0x478098
push dword [esp + 0x14]
mov edx, dword [esp + 0x28]
mov ecx, edi
call fcn.004769d0
mov ecx, dword [edi + 0x2c]
add esp, 4
mov edx, dword [esp + 0x14]
mov dword [esp + 0x54], eax
lea eax, [ecx + 1]
mov dword [esp + 0x90], eax
mov dword [esp + 0x38], eax
movsx eax, word [edx + 0x2a]
inc eax
add eax, ecx
mov dword [edi + 0x2c], eax
cmp dword [edx + 0x38], 0
je 0x476ea9
add ecx, 2
inc eax
mov dword [esp + 0x38], ecx
mov dword [edi + 0x2c], eax
jmp 0x476ead
mov ecx, dword [esp + 0x38]
lea eax, [ecx + 1]
mov ecx, dword [edx + 0x24]
mov edx, dword [esp + 0x1c]
shr ecx, 7
not cl
mov dword [esp + 0x4c], eax
and ecx, 0xffffff01
mov dword [esp + 0x30], ecx
test edx, edx
je 0x477024
mov eax, dword [edx + 4]
xor ecx, ecx
test eax, eax
jle 0x476ef2
nop dword [eax + eax]
mov eax, dword [edx]
mov dword [eax + ecx*8 + 4], 0xffffffff
inc ecx
mov eax, dword [edx + 4]
cmp ecx, eax
jl 0x476ee0
xor edx, edx
mov dword [esp + 0x28], edx
test eax, eax
jle 0x477024
mov ecx, dword [esp + 0x14]
movzx eax, word [ecx + 0x2a]
mov dword [esp + 0x40], eax
nop dword [eax]
cwde
xor esi, esi
test eax, eax
jle 0x476f7e
mov eax, dword [esp + 0x1c]
mov edi, dword [ecx + 4]
mov eax, dword [eax]
lea eax, [eax + edx*8]
mov dword [esp + 0x44], eax
mov edx, dword [edi]
mov ecx, dword [eax]
call fcn.00429650
test eax, eax
je 0x476f4d
mov ecx, dword [esp + 0x40]
inc esi
movsx eax, cx
add edi, 0x10
cmp esi, eax
mov eax, dword [esp + 0x44]
jl 0x476f27
mov edx, dword [esp + 0x28]
jmp 0x476f7e
mov eax, dword [esp + 0x44]
xor ecx, ecx
mov edx, dword [esp + 0x30]
mov dword [eax + 4], esi
movzx eax, dl
mov edx, dword [esp + 0x28]
cmp edx, esi
cmove ecx, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x30], cl
movsx eax, word [eax + 0x28]
cmp esi, eax
jne 0x476f7e
mov dword [esp + 0x7c], edx
mov byte [esp + 0x30], cl
mov eax, dword [esp + 0x14]
movzx edi, word [eax + 0x2a]
movsx eax, di
cmp esi, eax
jl 0x476fda
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
mov esi, dword [eax + edx*8]
mov edx, 0x512124
mov ecx, esi
call fcn.00429650
test eax, eax
je 0x476fc6
mov edx, 0x51212c
mov ecx, esi
call fcn.00429650
test eax, eax
je 0x476fc6
mov edx, 0x512134
mov ecx, esi
call fcn.00429650
test eax, eax
jne 0x476ff7
cmp byte [esp + 0x58], 0
jne 0x476ff7
mov edx, dword [esp + 0x28]
mov dword [esp + 0x7c], edx
mov byte [esp + 0x30], 0
mov ecx, dword [esp + 0x1c]
inc edx
mov eax, edi
mov dword [esp + 0x28], edx
mov dword [esp + 0x40], eax
cmp edx, dword [ecx + 4]
jge 0x47701c
mov ecx, dword [esp + 0x14]
jmp 0x476f10
push esi
mov esi, dword [esp + 0x38]
push 0
push dword [esp + 0x88]
push 0x513958
push esi
call fcn.004294b0
add esp, 0x14
mov byte [esi + 0x11], 1
jmp 0x478140
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x20]
cmp dword [esp + 0x48], 0
je 0x4772e0
inc dword [edi + 0x2c]
mov edx, 0xd
mov eax, dword [esi + 0x88]
mov ecx, dword [edi + 0x2c]
mov dword [esp + 0x44], eax
inc eax
push eax
push 0
mov dword [esp + 0x48], ecx
push ecx
mov ecx, esi
call fcn.004458d0
mov eax, dword [esp + 0x4c]
add esp, 0xc
mov edx, dword [esp + 0x48]
mov ecx, edi
mov dword [esp + 0xa4], eax
xor eax, eax
cmp byte [esp + 0x30], al
mov byte [esp + 0xa0], 0xd
cmovne eax, dword [esp + 0x4c]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0xb0], 0
movsx eax, word [eax + 0x2a]
mov dword [esp + 0xac], eax
lea eax, [esp + 0xa0]
push eax
call fcn.00487ad0
mov ecx, dword [esp + 0xac]
add esp, 4
mov dword [esp + 0x88], ecx
test eax, eax
jne 0x478140
mov eax, dword [esp + 0x60]
cmp byte [eax + 0x49], 0
jne 0x478140
cmp dword [edi + 0x24], 0
jne 0x478140
mov edx, dword [esp + 0x40]
mov ecx, esi
call fcn.00445ec0
mov edx, dword [esp + 0x44]
mov ecx, esi
call fcn.004462d0
cmp dword [esp + 0x78], 0
mov ecx, dword [esp + 0x48]
mov eax, dword [ecx]
mov eax, dword [eax]
mov dword [esp + 0x30], eax
jne 0x47720d
mov eax, dword [edi + 8]
mov dword [esp + 0x2c], eax
test eax, eax
jne 0x47712e
cmp dword [edi + 0x74], eax
jne 0x477123
mov eax, dword [edi]
test byte [eax + 0x44], 8
jne 0x477123
mov byte [edi + 0x17], 1
mov ecx, edi
call fcn.00445680
mov dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x88]
mov dword [esp + 0x28], eax
cmp dword [ecx + 0x38], 0
je 0x477161
mov edx, dword [ecx + 0x40]
test edx, edx
je 0x477163
mov eax, dword [edi]
nop dword [eax + eax]
cmp dword [edx], eax
je 0x47715b
mov edx, dword [edx + 0x18]
test edx, edx
jne 0x477150
mov eax, dword [esp + 0x28]
jmp 0x477163
xor edx, edx
mov ecx, 1
mov dword [esp + 0x40], ecx
cmp eax, ecx
jle 0x4771f9
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov al, byte [eax + 0x49]
mov byte [esp + 0x6b], al
mov eax, dword [esp + 0x28]
dec eax
test ecx, ecx
cmovns eax, ecx
cmp byte [esp + 0x6b], 0
je 0x477199
mov eax, 0x52100c
jmp 0x4771a6
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x58]
lea eax, [eax + ecx*4]
mov cl, byte [eax]
cmp cl, 0x6d
jne 0x4771de
mov ecx, dword [esp + 0x24]
cmp dword [eax + 0xc], ecx
jne 0x4771e8
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x14]
cmp ecx, dword [eax + 0x1c]
je 0x47720d
mov eax, dword [eax + 8]
test eax, eax
je 0x4771e8
nop dword [eax]
cmp ecx, dword [eax + 0x2c]
je 0x47720d
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x4771d0
jmp 0x4771e8
cmp cl, 0xa4
jne 0x4771e8
cmp dword [eax + 0x10], edx
je 0x47720d
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x40], ecx
cmp ecx, eax
jl 0x477185
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x30]
jmp 0x477332
mov edx, dword [edi + 0x28]
mov ecx, edi
mov byte [esp + 0x1b], 1
mov dword [esp + 0x3c], edx
lea eax, [edx + 1]
mov dword [edi + 0x28], eax
call fcn.00462570
mov ecx, dword [esp + 0x34]
mov edi, eax
call fcn.00462570
push dword [esp + 0x30]
mov ecx, esi
mov dword [esp + 0x2c], eax
push edx
mov edx, 0x71
call fcn.00445a20
mov eax, dword [esp + 0xac]
mov edx, 0xe
push eax
mov ecx, esi
mov dword [esp + 0x38], eax
call fcn.004459b0
mov ecx, dword [esp + 0x2c]
add esp, 0xc
mov edx, 0x66
mov esi, eax
push edi
push dword [esp + 0x34]
push dword [esp + 0x90]
call fcn.004458d0
mov ecx, dword [esp + 0x2c]
add esp, 0xc
mov edx, 0x79
push dword [esp + 0x28]
push dword [esp + 0x40]
call fcn.00445a20
push dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov edx, 0x7a
push edi
push dword [esp + 0x4c]
call fcn.004458d0
mov ecx, dword [esp + 0x34]
add esp, 0x14
mov edx, esi
call fcn.00445a90
mov ecx, dword [esp + 0x20]
mov edx, esi
call fcn.004462d0
mov ecx, dword [esp + 0x34]
mov edx, edi
call fcn.00462590
mov edx, dword [esp + 0x28]
call fcn.00462590
mov eax, dword [esp + 0x30]
jmp 0x477332
mov ecx, dword [esp + 0x64]
xorps xmm0, xmm0
movaps xmmword [esp + 0xa0], xmm0
movaps xmmword [esp + 0xb0], xmm0
mov dword [esp + 0xa0], edi
mov dword [esp + 0x3c], 0xffffffff
test ecx, ecx
je 0x47732c
mov eax, dword [ecx]
mov edx, ecx
lea ecx, [esp + 0xa0]
mov dword [esp + 0x30], eax
call fcn.0045a820
test eax, eax
jne 0x478140
mov eax, dword [esp + 0x30]
jmp 0x477332
xor eax, eax
mov dword [esp + 0x30], eax
cmp dword [esp + 0x1c], 0
jne 0x47734b
test eax, eax
mov eax, dword [esp + 0x14]
jle 0x47734f
movsx ecx, word [eax + 0x28]
mov dword [esp + 0x7c], ecx
jmp 0x47734f
mov eax, dword [esp + 0x14]
movsx eax, word [eax + 0x2a]
xor ecx, ecx
mov esi, dword [esp + 0x20]
xor edx, edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x24], ecx
cmp eax, 2
jl 0x4773b5
mov ecx, dword [esp + 0x14]
lea edx, [eax - 2]
shr edx, 1
mov ecx, dword [ecx + 4]
add ecx, 0x1f
inc edx
lea eax, [edx + edx]
mov dword [esp + 0x24], eax
movzx eax, byte [ecx - 0x10]
lea ecx, [ecx + 0x20]
shr eax, 1
and eax, 1
add dword [esp + 0x28], eax
movzx eax, byte [ecx - 0x20]
shr eax, 1
and eax, 1
add dword [esp + 0x44], eax
sub edx, 1
jne 0x477387
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x34]
cmp dword [esp + 0x24], eax
jge 0x4773e5
mov eax, dword [esp + 0x14]
shl dword [esp + 0x24], 4
mov esi, dword [esp + 0x24]
mov eax, dword [eax + 4]
movzx eax, byte [esi + eax + 0xf]
mov esi, dword [esp + 0x20]
shr eax, 1
and eax, 1
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
cmp dword [esp + 0x1c], 0
jne 0x477421
cmp dword [esp + 0x30], 0
je 0x477445
sub eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x30]
sub eax, dword [esp + 0x50]
cmp ecx, eax
je 0x477445
push ecx
push eax
push 0
push dword [esp + 0x8c]
push 0x513978
push edi
call fcn.004294b0
add esp, 0x18
jmp 0x478140
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
mov eax, dword [eax + 4]
cmp ecx, eax
je 0x477445
push eax
push ecx
push 0x5139ac
push edi
call fcn.004294b0
add esp, 0x10
jmp 0x478140
mov eax, dword [esp + 0x60]
test byte [eax + 0x1c], 0x80
je 0x47747a
cmp byte [edi + 0x12], 0
jne 0x47747a
cmp dword [edi + 0x78], 0
jne 0x47747a
inc dword [edi + 0x2c]
mov edx, 0x46
mov eax, dword [edi + 0x2c]
mov ecx, esi
push eax
push 0
mov dword [esp + 0xa4], eax
call fcn.00445a20
add esp, 8
cmp dword [esp + 0x70], 0
jne 0x477505
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x94]
push eax
lea eax, [esp + 0x78]
mov ecx, edi
push eax
push 0
push 0xffffffffffffffff
push 0
push 0x6e
call fcn.00479d50
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x68], eax
push 0
lea eax, [eax*4 + 4]
push eax
call fcn.00426530
add esp, 0x20
mov dword [esp + 0x84], eax
test eax, eax
je 0x478140
mov eax, dword [esp + 0x14]
xor ecx, ecx
mov edx, dword [eax + 8]
cmp dword [esp + 0x50], ecx
jle 0x477505
nop dword [eax]
inc dword [edi + 0x2c]
mov esi, dword [esp + 0x84]
mov eax, dword [edi + 0x2c]
mov dword [esi + ecx*4], eax
inc ecx
movzx eax, word [edx + 0x34]
add dword [edi + 0x2c], eax
mov edx, dword [edx + 0x14]
cmp ecx, dword [esp + 0x50]
jl 0x4774e0
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x477550
mov edx, dword [esp + 0x80]
mov esi, dword [esp + 0x6c]
mov ecx, dword [esp + 0x74]
mov dword [edx + 0x34], ecx
mov dword [eax + 0x14], edx
mov eax, dword [esp + 0x4c]
mov dword [esi + 0x18], eax
mov eax, esi
mov dword [eax + 0x1c], ecx
mov ecx, esi
mov eax, dword [esp + 0x94]
mov esi, dword [esp + 0x20]
mov dword [ecx + 0x20], eax
mov eax, ecx
cmp dword [eax], 0
je 0x477550
push eax
mov ecx, edi
call fcn.0048ea70
add esp, 4
cmp byte [esp + 0x1b], 0
je 0x477576
push dword [esp + 0x3c]
mov edx, 0x24
mov ecx, esi
call fcn.004459b0
mov dword [esp + 0x9c], eax
mov eax, dword [esi + 0x88]
jmp 0x477594
cmp dword [esp + 0x48], 0
je 0x47759e
push dword [esp + 0x2c]
mov edx, 0xe
mov ecx, esi
call fcn.004459b0
mov dword [esp + 0x9c], eax
mov dword [esp + 0x90], eax
add esp, 4
mov ecx, esi
call fcn.00445f40
test byte [esp + 0x5c], 1
mov dword [esp + 0x28], eax
je 0x477916
mov eax, dword [esp + 0x14]
mov ecx, edi
movsx edx, word [eax + 0x2a]
inc edx
call fcn.004625b0
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x24], eax
push eax
test ecx, ecx
jns 0x4775e4
push 0xffffffffffffffff
mov edx, 0x46
mov ecx, esi
call fcn.00445a20
add esp, 8
jmp 0x47765f
cmp byte [esp + 0x1f], 0
je 0x477601
push ecx
push dword [esp + 0x44]
mov edx, 0x5a
mov ecx, esi
call fcn.004458d0
add esp, 0xc
jmp 0x477616
mov eax, dword [esp + 0x68]
lea edx, [ecx + ecx*2]
mov ecx, edi
mov edx, dword [eax + edx*8 + 4]
call fcn.00460f00
add esp, 4
push dword [esp + 0x24]
mov edx, 0x33
mov ecx, esi
call fcn.004459b0
mov ecx, dword [esp + 0x24]
add esp, 4
mov edx, 0x46
mov esi, eax
push dword [esp + 0x24]
push 0xffffffffffffffff
call fcn.00445a20
mov ecx, dword [esp + 0x28]
mov edx, esi
call fcn.004462d0
push dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
mov edx, 0xf
call fcn.004459b0
add esp, 0xc
mov edx, dword [esp + 0x14]
xor esi, esi
mov dword [esp + 0x50], esi
movzx eax, word [edx + 0x2a]
mov ecx, eax
cmp si, ax
jge 0x47788b
mov edx, dword [esp + 0x24]
xor ecx, ecx
or eax, 0xffffffff
mov dword [esp + 0x2c], ecx
sub eax, edx
mov dword [esp + 0x5c], eax
lea edi, [edx + 1]
nop
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x4776ca
mov edx, dword [edx + 4]
xor esi, esi
test edx, edx
jle 0x4776c6
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx]
add ecx, 4
nop word [eax + eax]
add eax, edi
cmp dword [ecx], eax
je 0x4776c2
mov eax, dword [esp + 0x5c]
inc esi
add ecx, 8
cmp esi, edx
jl 0x4776b0
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
mov al, byte [esp + 0x1b]
test al, al
jne 0x4776d9
cmp dword [esp + 0x64], 0
je 0x4776e2
test edx, edx
je 0x47774d
cmp esi, dword [edx + 4]
jl 0x47774d
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 4]
mov edx, dword [eax + ecx + 4]
test edx, edx
je 0x477713
cmp byte [edx], 0xa4
jne 0x477713
mov eax, dword [esp + 0x34]
push edi
push dword [edx + 0x1c]
mov edx, 0x4e
mov ecx, dword [eax + 8]
call fcn.00445a20
add esp, 8
jmp 0x47784d
mov ecx, dword [esp + 0x34]
push edi
call fcn.0045fbd0
mov edx, eax
add esp, 4
cmp edx, edi
je 0x47784d
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x47784d
push edi
push edx
mov edx, 0x4f
call fcn.00445a20
add esp, 8
jmp 0x47784d
test al, al
je 0x47776d
mov ecx, dword [esp + 0x20]
mov edx, 0x5a
push edi
push esi
push dword [esp + 0x44]
call fcn.004458d0
add esp, 0xc
jmp 0x47784d
mov ecx, dword [esp + 0x64]
lea eax, [esi + esi*2]
mov edx, dword [ecx + eax*8 + 4]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x40], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x50], ecx
test edx, edx
je 0x47779b
cmp byte [edx], 0xa4
jne 0x47779b
push edi
push dword [edx + 0x1c]
mov edx, 0x4e
jmp 0x4777be
push edi
mov ecx, eax
call fcn.0045fbd0
mov edx, eax
add esp, 4
cmp edx, edi
je 0x4777c6
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x4777ca
push edi
push edx
mov edx, 0x4f
call fcn.00445a20
add esp, 8
mov eax, dword [esp + 0x34]
inc dword [eax + 0x2c]
mov ecx, dword [esp + 0x50]
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x44], eax
mov eax, dword [ecx + 0xc]
mov edx, dword [ecx + 0x88]
cmp dword [eax + 0x30], edx
jg 0x4777fd
mov edx, dword [esp + 0x44]
push 0
push edx
push edi
mov edx, 0x4e
call fcn.00445890
add esp, 0xc
jmp 0x477833
lea eax, [edx + 1]
mov dword [ecx + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x44]
mov eax, dword [eax + 0x58]
mov dword [eax + ecx*4], 0x4e
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x40]
mov al, byte [ecx]
and dword [ecx + 4], 0xffffefff
mov byte [ecx + 0x26], al
mov eax, dword [esp + 0x44]
mov byte [ecx], 0xa4
mov dword [ecx + 0x1c], eax
mov eax, dword [esp + 0x14]
inc edi
add dword [esp + 0x2c], 0x10
cmp dword [esp + 0x1c], 0
mov ecx, dword [esp + 0x5c]
movzx edx, word [eax + 0x2a]
lea eax, [esi + 1]
cmovne eax, esi
add ecx, edi
mov esi, eax
movsx eax, dx
cmp ecx, eax
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x2c]
jl 0x477690
mov edi, dword [esp + 0x34]
mov ecx, edx
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x70], 0
mov esi, dword [esp + 0x20]
movzx eax, cx
jne 0x4778b1
mov eax, dword [esp + 0x24]
mov ecx, esi
inc eax
push eax
call fcn.004768d0
mov edx, dword [esp + 0x18]
add esp, 4
movzx eax, word [edx + 0x2a]
push dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
push dword [ebp + 0x10]
cwde
sub ecx, eax
dec ecx
push ecx
push edx
mov edx, dword [esp + 0x88]
mov ecx, edi
push 1
push 0
push 0x74
call fcn.0048c450
mov ecx, dword [esp + 0x30]
add esp, 0x1c
movsx eax, word [ecx + 0x2a]
inc eax
cmp eax, 1
jne 0x477905
mov edx, dword [esp + 0x24]
test edx, edx
je 0x47791a
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x47791a
movzx eax, al
mov dword [edi + eax*4 + 0x90], edx
inc byte [edi + 0x13]
jmp 0x47791a
cmp eax, dword [edi + 0x1c]
jle 0x47791a
mov dword [edi + 0x1c], eax
mov eax, dword [esp + 0x24]
mov dword [edi + 0x20], eax
jmp 0x47791a
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x70], 0
jne 0x477e94
mov eax, dword [ecx + 0x38]
test eax, eax
je 0x47794b
push dword [esp + 0x90]
mov edx, 0x49
mov ecx, esi
push 0
call fcn.00445a20
mov eax, dword [esp + 0x1c]
add esp, 8
mov eax, dword [eax + 0x38]
mov edx, dword [esp + 0x7c]
test edx, edx
js 0x477a9a
cmp byte [esp + 0x1b], 0
je 0x4779cb
mov ecx, dword [esp + 0x38]
push ecx
push edx
push dword [esp + 0x44]
mov edx, 0x5a
mov ecx, esi
call fcn.004458d0
add esp, 0xc
mov eax, dword [esp + 0x14]
mov ecx, esi
cmp dword [eax + 0x38], 0
jne 0x477a6a
push dword [esp + 0x38]
mov edx, 0x33
call fcn.004459b0
mov ecx, dword [esp + 0x58]
add esp, 4
mov edx, 0x79
mov esi, eax
push ecx
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x7c]
push ecx
mov ecx, dword [esp + 0x2c]
call fcn.004458d0
add esp, 0xc
mov edx, esi
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.004462d0
jmp 0x477a85
cmp dword [esp + 0x48], 0
je 0x4779f2
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x88]
push ecx
add eax, edx
mov ecx, esi
push eax
mov edx, 0x4e
call fcn.00445a20
add esp, 8
jmp 0x477977
mov eax, dword [esp + 0x64]
lea edx, [edx + edx*2]
push dword [esp + 0x38]
mov ecx, edi
mov edx, dword [eax + edx*8 + 4]
call fcn.00460f00
mov eax, dword [esi + 0x88]
add esp, 4
lea ecx, [eax + eax*4]
mov eax, dword [esi]
shl ecx, 2
cmp byte [eax + 0x49], 0
je 0x477a26
mov eax, 0x52100c
jmp 0x477a2e
mov eax, dword [esi + 0x58]
add eax, 0xffffffec
add eax, ecx
cmp byte [eax], 0x49
jne 0x477977
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x38], 0
jne 0x477977
mov ecx, dword [esp + 0x74]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x38]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x54]
mov byte [eax], 0x79
mov dword [eax + 0xc], ecx
mov dword [esp + 0x2c], 1
jmp 0x477ae6
mov eax, dword [esi + 0x88]
mov edx, 0x32
add eax, 2
push eax
push dword [esp + 0x3c]
call fcn.00445a20
add esp, 8
push dword [esp + 0x38]
mov edx, 0xf
mov ecx, esi
call fcn.004459b0
add esp, 4
jmp 0x477ade
test eax, eax
jne 0x477ac9
cmp byte [esp + 0x58], al
jne 0x477ac9
mov ecx, dword [esp + 0x54]
lea edx, [eax + 0x79]
push ecx
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x7c]
push ecx
mov ecx, esi
call fcn.004458d0
add esp, 0xc
mov dword [esp + 0x2c], 1
jmp 0x477ae6
push dword [esp + 0x38]
mov edx, 0x49
mov ecx, esi
push 0
call fcn.00445a20
add esp, 8
mov dword [esp + 0x2c], 0
mov eax, dword [esp + 0x54]
test eax, eax
jle 0x477b03
push dword [esp + 0x38]
mov ecx, dword [edi + 8]
mov edx, 0x98
push eax
call fcn.00445a20
add esp, 8
mov edx, dword [esp + 0x14]
xor eax, eax
xor esi, esi
mov dword [esp + 0x54], 0
cmp ax, word [edx + 0x2a]
jge 0x477d33
xor ecx, ecx
mov dword [esp + 0x70], ecx
movsx eax, word [edx + 0x28]
cmp esi, eax
jne 0x477b9f
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0xc]
mov ecx, dword [edx + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x477b5e
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x20]
add edx, esi
push 0
push 0
push edx
mov edx, 0x4a
call fcn.00445890
add esp, 0xc
jmp 0x477d17
mov edi, dword [esp + 0x34]
lea eax, [ecx + 1]
mov dword [edx + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edx + 0x58]
mov edx, dword [esp + 0x4c]
add edx, esi
mov dword [eax + ecx*4], 0x4a
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x477d17
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x477bda
mov eax, dword [edx + 4]
mov dl, byte [eax + ecx + 0xf]
mov eax, dword [esp + 0x54]
and dl, 2
je 0x477bc8
inc eax
or ecx, 0xffffffff
test dl, dl
cmove eax, dword [esp + 0x54]
mov dword [esp + 0x54], eax
jmp 0x477bf4
mov ecx, esi
sub ecx, eax
inc eax
test dl, dl
cmove eax, dword [esp + 0x54]
mov dword [esp + 0x54], eax
jmp 0x477bf4
mov edx, dword [eax + 4]
xor ecx, ecx
test edx, edx
jle 0x477c00
mov eax, dword [eax]
add eax, 4
cmp dword [eax], esi
je 0x477bf4
inc ecx
add eax, 8
cmp ecx, edx
jl 0x477be8
test ecx, ecx
js 0x477c90
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x30], 0
je 0x477c90
test eax, eax
je 0x477c14
cmp ecx, dword [eax + 4]
jge 0x477c90
cmp byte [esp + 0x1b], 0
je 0x477c3d
mov edx, dword [esp + 0x4c]
add edx, esi
push edx
push ecx
push dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
mov edx, 0x5a
call fcn.004458d0
add esp, 0xc
jmp 0x477d17
cmp dword [esp + 0x48], 0
je 0x477c79
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x88], eax
je 0x477d17
lea edx, [eax + esi]
mov eax, dword [esp + 0x88]
push edx
add eax, ecx
mov edx, 0x4f
mov ecx, dword [esp + 0x24]
push eax
call fcn.00445a20
add esp, 8
jmp 0x477d17
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x64]
add edx, esi
push edx
lea edx, [ecx + ecx*2]
mov edx, dword [eax + edx*8 + 4]
jmp 0x477d0d
cmp byte [edi + 0x17], 0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x70]
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx + 4]
mov dword [esp + 0x58], eax
je 0x477d04
mov byte [esp + 0xb4], 2
mov dword [esp + 0xa4], fcn.0045cf40
mov dword [esp + 0xa8], 0x45cee0
mov dword [esp + 0xb8], 0
test eax, eax
je 0x477cf2
mov edx, eax
lea ecx, [esp + 0xa0]
call fcn.00458220
cmp byte [esp + 0xb4], 0
mov eax, dword [esp + 0x58]
je 0x477d04
mov edx, dword [esp + 0x4c]
mov ecx, edi
add edx, esi
push edx
mov edx, eax
call fcn.00460d20
jmp 0x477d14
mov edx, dword [esp + 0x4c]
add edx, esi
push edx
mov edx, eax
mov ecx, edi
call fcn.00460f00
add esp, 4
mov edx, dword [esp + 0x14]
inc esi
mov ecx, dword [esp + 0x70]
add ecx, 0x10
mov dword [esp + 0x70], ecx
movsx eax, word [edx + 0x2a]
cmp esi, eax
jl 0x477b23
cmp dword [edx + 0x38], 0
je 0x477dc3
mov esi, dword [edx + 0x40]
test esi, esi
je 0x477d53
mov eax, dword [esp + 0x60]
cmp dword [esi], eax
je 0x477d53
mov esi, dword [esi + 0x18]
test esi, esi
jne 0x477d48
mov ecx, edi
call fcn.00490ca0
mov eax, dword [esp + 0x14]
mov edx, 0xa
push 0xfffffffffffffff4
push esi
push dword [esp + 0x98]
movsx eax, word [eax + 0x2a]
mov esi, dword [esp + 0x2c]
add eax, 2
push eax
push 1
mov ecx, esi
call fcn.00445cd0
mov eax, dword [esi + 0x88]
add esp, 0x14
test eax, eax
jle 0x477db0
mov ecx, dword [ebp + 0x10]
cmp ecx, 0xb
movzx edx, cx
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x58]
mov dword [esp + 0x58], 2
cmove edx, dword [esp + 0x58]
mov word [eax + ecx*4 - 0x12], dx
mov eax, dword [edi + 0x74]
mov ecx, edi
test eax, eax
cmovne ecx, eax
mov byte [ecx + 0x15], 1
jmp 0x477e94
push dword [esp + 0x6c]
mov esi, dword [esp + 0x94]
lea eax, [esp + 0x5c]
push 0
push eax
push dword [esp + 0x34]
mov eax, dword [esp + 0x8c]
mov ecx, edi
push dword [ebp + 0x10]
shr eax, 0x1f
xor al, 1
movzx eax, al
push eax
push 0
push esi
push dword [esp + 0xb4]
push dword [esp + 0x98]
push dword [esp + 0xac]
call fcn.00478260
add esp, 0x2c
mov ecx, edi
push 0
push 0
push esi
mov esi, dword [esp + 0x20]
mov edx, esi
push 0
call fcn.00475490
add esp, 0x10
cmp dword [esp + 0x58], 0
je 0x477e5c
cmp dword [esp + 0x78], 0
jne 0x477e58
mov eax, dword [esp + 0x60]
test dword [eax + 0x1c], 0x4000
je 0x477e5c
mov ecx, dword [esi + 0x48]
mov edx, dword [esi]
add ecx, 0x38
push 0
call fcn.0042aa50
add esp, 4
cmp dword [eax + 8], 0
je 0x477e5c
xor eax, eax
jmp 0x477e61
mov eax, 1
push eax
push dword [esp + 0x30]
mov edx, esi
mov ecx, edi
push 0
push dword [esp + 0x90]
push dword [esp + 0xa0]
push dword [esp + 0xa8]
push dword [esp + 0x8c]
call fcn.00479a40
mov esi, dword [esp + 0x3c]
add esp, 0x1c
mov edx, dword [esp + 0x9c]
test edx, edx
je 0x477ef9
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x477ec3
push 0
push 1
push edx
mov edx, 0x53
mov ecx, esi
call fcn.00445890
add esp, 0xc
jmp 0x477ef9
mov edi, dword [esp + 0x34]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x53
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 1
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
cmp dword [esp + 0x78], 0
je 0x477f31
mov ecx, dword [esp + 0x14]
push dword [esp + 0x28]
mov edx, dword [esp + 0x50]
push dword [ebp + 0x10]
movsx eax, word [ecx + 0x2a]
sub edx, eax
sub edx, 2
push edx
mov edx, dword [esp + 0x84]
push ecx
push 2
push 0
push 0x74
mov ecx, edi
call fcn.0048c450
add esp, 0x1c
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 0x40]
test ecx, ecx
je 0x477f50
mov eax, dword [esp + 0x28]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [esi + 0x88]
mov dword [ecx], eax
cmp byte [esp + 0x1b], 0
je 0x478053
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x477f88
mov edx, dword [esp + 0x8c]
mov ecx, esi
push 0
push edx
push dword [esp + 0x44]
mov edx, 5
call fcn.00445890
add esp, 0xc
jmp 0x477fc1
mov edx, dword [esp + 0x3c]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x8c]
mov dword [eax + ecx*4], 5
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]
mov edx, dword [esi + 0x88]
cmp byte [eax + 0x49], 0
je 0x477fd6
mov eax, 0x52100c
jmp 0x477fee
mov ecx, dword [esp + 0x98]
lea eax, [edx - 1]
test ecx, ecx
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x58]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x47801b
push 0
push 0
push dword [esp + 0x44]
mov edx, 0x75
mov ecx, esi
call fcn.00445890
add esp, 0xc
jmp 0x478098
mov edx, dword [esp + 0x3c]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x75
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x478098
cmp dword [esp + 0x48], 0
je 0x478098
mov edx, dword [esp + 0x8c]
mov ecx, esi
call fcn.00445a90
mov eax, dword [esi]
mov edx, dword [esi + 0x88]
cmp byte [eax + 0x49], 0
je 0x47807d
mov eax, 0x52100c
jmp 0x478095
mov ecx, dword [esp + 0x98]
lea eax, [edx - 1]
test ecx, ecx
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x58]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
cmp byte [edi + 0x12], 0
jne 0x4780b1
cmp dword [edi + 0x78], 0
jne 0x4780b1
cmp dword [edi + 0x70], 0
je 0x4780b1
mov ecx, edi
call fcn.00476a90
mov edx, dword [esp + 0x9c]
test edx, edx
je 0x478140
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x4780e4
push 0
push 1
push edx
mov edx, 0x51
mov ecx, esi
call fcn.00445890
add esp, 0xc
jmp 0x478116
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x51
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 1
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, 1
mov ecx, esi
call fcn.00447800
mov eax, dword [esi]
cmp byte [eax + 0x49], 0
jne 0x478140
mov ecx, dword [esi + 0x64]
mov edx, 0x5139c8
push 0
push 1
push 0xffffffffffffffff
call fcn.00444b30
add esp, 0xc
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x60]
mov ecx, edi
mov edx, dword [esp + 0x80]
call fcn.0046cef0
mov eax, dword [esp + 0x64]
test eax, eax
je 0x478167
mov edx, eax
mov ecx, edi
call fcn.0045cdb0
mov edx, dword [esp + 0x6c]
mov ecx, edi
call fcn.0048e940
mov eax, dword [esp + 0x48]
test eax, eax
je 0x478188
push 1
mov edx, eax
mov ecx, edi
call fcn.0047fcb0
add esp, 4
mov edx, esi
mov ecx, edi
call fcn.0046cb10
mov ecx, dword [esp + 0x84]
test ecx, ecx
je 0x478201
test edi, edi
je 0x4781f8
cmp dword [edi + 0x1d8], 0
je 0x4781c6
mov edx, ecx
mov ecx, edi
call fcn.00426210
pop edi
pop esi
mov ecx, dword [esp + 0xc4]
xor ecx, esp
call fcn.004ad990
mov esp, ebp
pop ebp
ret
cmp ecx, dword [edi + 0x128]
jb 0x4781f8
cmp ecx, dword [edi + 0x12c]
jae 0x4781f8
mov eax, dword [edi + 0x124]
mov dword [ecx], eax
mov dword [edi + 0x124], ecx
pop edi
pop esi
mov ecx, dword [esp + 0xc4]
xor ecx, esp
call fcn.004ad990
mov esp, ebp
pop ebp
ret
push ecx
call fcn.004261a0
add esp, 4
mov ecx, dword [esp + 0xcc]
pop edi
pop esi
xor ecx, esp
call fcn.004ad990
mov esp, ebp
pop ebp
ret