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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5013c2
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x610
push ebx
push esi
push edi
push 0x10000
mov dword [esp + 0x48], 0x19
call fcn.004b01f6
add esp, 4
test eax, eax
mov dword [esp + 0x10], eax
jne 0x47cf45
mov eax, dword [ebp + 8]
push 0
push 1
mov dword [eax + 0x10], 4
mov eax, dword [eax + 0xc]
push 0x40c
push eax
call dword [0x50694c]
xor eax, eax
mov ecx, dword [esp + 0x61c]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x1660]
cmp eax, 3
mov esi, dword [ebx + 4]
mov edi, dword [ebx + 8]
mov dword [esp + 0x34], esi
mov dword [esp + 0x2c], edi
je 0x47cf77
cmp eax, 0x10
jge 0x47cf77
lea ecx, [ebx + 0x1638]
push ecx
push edi
push esi
call fcn.0047c260
add esp, 0xc
push edi
push esi
call fcn.0041cd20
add esp, 8
cmp eax, 0x12
mov dword [esp + 0x60], eax
je 0x47cf94
cmp eax, 0x41
jl 0x47cfa6
cmp eax, 0x43
jg 0x47cfa6
mov eax, dword [ebx + 0x4c8]
test eax, eax
mov dword [esp + 0x68], 2
jne 0x47cfae
mov dword [esp + 0x68], 0
push ebx
call fcn.00442fb0
add esp, 4
lea ecx, [esp + 0x14]
mov dword [esp + 0x5c], eax
mov byte [esp + 0x19], 0
mov byte [esp + 0x23], 0
mov byte [esp + 0x67], 0
mov byte [esp + 0x2b], 0
mov byte [esp + 0x1b], 1
mov dword [esp + 0x6c], 0
call fcn.004838d7
xor eax, eax
mov dword [esp + 0x624], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x30], eax
or eax, 0xffffffff
mov dword [0x67cc2c], eax
mov dword [0x67cc30], eax
mov byte [0x67cc28], 0
cmp dword [ebx + 0x1c], 0x80
mov dword [esp + 0x7c], 1
jne 0x47d688
mov eax, dword [ebx + 0x4d0]
test eax, eax
mov byte [esp + 0x19], 1
je 0x47d688
push 0
push 0
push 0x510ac8
push 0x800006
push 0
push 0x510ac4
push 1
lea ecx, [esp + 0x36c]
call fcn.004caabf
lea ecx, [esp + 0x350]
mov byte [esp + 0x624], 1
call fcn.004ca764
cmp eax, 1
jne 0x47d6af
lea edx, [esp + 0x48]
push edx
lea ecx, [esp + 0x354]
call fcn.004cac82
mov eax, dword [eax]
push 0x100
push 0x8000
push eax
call fcn.004c3426
mov dword [0x67cc30], eax
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
or edi, 0xffffffff
add esp, 0xc
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47d0c1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x354]
mov byte [esp + 0x1e], 0
call fcn.004cae5f
lea ecx, [esp + 0x24]
mov byte [esp + 0x624], 2
call fcn.0040f500
mov ecx, dword [esp + 0x24]
push 0x510ac0
push ecx
call fcn.004b038d
add esp, 8
test eax, eax
jne 0x47d105
mov byte [esp + 0x1a], 1
jmp 0x47d16f
cmp dword [0x67cc30], edi
je 0x47d17c
lea edx, [esp + 0x48]
push edx
lea ecx, [esp + 0x354]
call fcn.004cac82
push 0x510ab8
push eax
lea eax, [esp + 0x60]
push eax
mov byte [esp + 0x630], 3
call fcn.0040a410
add esp, 0xc
lea ecx, [esp + 0x48]
mov byte [esp + 0x624], 2
call fcn.00402a90
mov ecx, dword [esp + 0x58]
push 0x100
push 0x8000
push ecx
call fcn.004c3426
add esp, 0xc
lea ecx, [esp + 0x58]
mov dword [0x67cc2c], eax
call fcn.00402a90
mov eax, dword [0x67cc30]
cmp eax, edi
jne 0x47d2e4
lea ecx, [esp + 0x58]
call fcn.004838d7
push 0x66
lea ecx, [esp + 0x5c]
mov byte [esp + 0x628], 4
call fcn.00483985
call fcn.004b141a
mov eax, dword [eax]
sub eax, 2
lea ecx, [esp + 0x350]
je 0x47d227
sub eax, 0xb
je 0x47d1ff
sub eax, 0xb
je 0x47d1da
lea edx, [esp + 0x6c]
push edx
call fcn.004cac82
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x284]
push 0x507fa0
push ecx
call fcn.004b00c6
lea ecx, [esp + 0x78]
jmp 0x47d250
lea edx, [esp + 0x48]
push edx
call fcn.004cac82
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x284]
push 0x507f78
push ecx
call fcn.004b00c6
lea ecx, [esp + 0x54]
jmp 0x47d250
lea edx, [esp + 0x74]
push edx
call fcn.004cac82
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x284]
push 0x507f54
push ecx
call fcn.004b00c6
lea ecx, [esp + 0x80]
jmp 0x47d250
lea edx, [esp + 0x88]
push edx
call fcn.004cac82
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x284]
push 0x507f24
push ecx
call fcn.004b00c6
lea ecx, [esp + 0x94]
add esp, 0xc
call fcn.00402a90
mov eax, dword [ebx + 0xc]
lea edx, [esp + 0x280]
push edx
push 1
push 0x40c
push eax
mov dword [ebx + 0x10], 8
call dword [0x50694c]
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004b155c
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
add esp, 4
mov byte [esp + 0x624], 2
lea edx, [eax + 0xc]
mov ecx, edi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47d2aa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x24]
call fcn.00402a90
lea ecx, [esp + 0x350]
mov byte [esp + 0x624], 0
call fcn.004ca9e5
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x624], edi
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jmp 0x47edd7
mov cl, byte [esp + 0x1a]
test cl, cl
mov dword [esp + 0x7c], 2
je 0x47d3ee
push eax
call fcn.004b3346
add esp, 4
push 0
push 0x800
mov edi, eax
push edx
push edi
mov dword [esp + 0xdc], edx
call fcn.004b3440
or eax, edx
je 0x47d3b9
mov eax, dword [0x67cc30]
push eax
call fcn.004ba848
mov eax, dword [0x67cc2c]
add esp, 4
cmp eax, 0xffffffff
je 0x47d341
push eax
call fcn.004ba848
add esp, 4
push 0x6db8
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x47d360
mov edx, dword [ebx + 0xc]
lea ecx, [esp + 0x138]
push ecx
push 1
push 0x40c
push edx
mov dword [ebx + 0x10], 8
call dword [0x50694c]
mov eax, dword [esp + 0x10]
push eax
call fcn.004b155c
add esp, 4
lea ecx, [esp + 0x24]
call fcn.00402a90
lea ecx, [esp + 0x350]
mov byte [esp + 0x624], 0
call fcn.004ca9e5
jmp 0x47edb8
mov eax, dword [esp + 0xcc]
push 0
push 0x800
push eax
push edi
call fcn.004b0210
mov ecx, dword [0x67cc30]
push 0
push 0
mov edi, eax
push 0
push ecx
mov dword [esp + 0x50], edi
call fcn.004b309b
add esp, 0x10
jmp 0x47d4b9
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0x44]
push eax
call fcn.0047bf00
add esp, 8
test eax, eax
jne 0x47d4b5
mov ecx, dword [0x67cc30]
push ecx
call fcn.004ba848
mov eax, dword [0x67cc2c]
add esp, 4
cmp eax, edi
je 0x47d429
push eax
call fcn.004ba848
add esp, 4
push 0x6db8
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x47d444
mov eax, dword [ebx + 0xc]
lea edx, [esp + 0x138]
push edx
push 1
push 0x40c
push eax
mov dword [ebx + 0x10], 8
call dword [0x50694c]
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004b155c
add esp, 4
lea ecx, [esp + 0x24]
call fcn.00402a90
lea ecx, [esp + 0x350]
mov byte [esp + 0x624], 0
call fcn.004ca9e5
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x624], edi
lea edx, [eax + 0xc]
lock xadd dword [edx], edi
dec edi
test edi, edi
jmp 0x47edd7
mov edi, dword [esp + 0x40]
mov al, byte [esp + 0x1a]
test al, al
mov edx, dword [esp + 0x70]
mov dword [0x67cc24], edi
jne 0x47d545
mov eax, dword [ebx + 0x1660]
xor cl, cl
cmp eax, 3
jne 0x47d4e7
cmp edx, 0x3000
je 0x47d4e5
cmp edx, 1
jne 0x47d4e7
mov cl, 1
cmp eax, 0x10
jl 0x47d4f6
cmp edx, 0x1e
je 0x47d545
cmp edx, 0x1c
je 0x47d545
test cl, cl
jne 0x47d545
mov eax, dword [0x67cc30]
push eax
call fcn.004ba848
mov eax, dword [0x67cc2c]
add esp, 4
cmp eax, 0xffffffff
je 0x47d51b
push eax
call fcn.004ba848
add esp, 4
push 0x6db9
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x47d536
jmp 0x47d36a
mov ecx, dword [ebx + 0x4bc]
test ecx, ecx
mov eax, dword [ebx + 0x1658]
mov dword [esp + 0x30], eax
je 0x47d56c
cmp dword [ebx + 0x1660], 0x10
jge 0x47d56c
mov eax, dword [ebx + 0x4ec]
mov dword [esp + 0x30], eax
mov ecx, dword [ebx + 0x4c0]
test ecx, ecx
je 0x47d589
cmp dword [ebx + 0x1660], 0x10
jl 0x47d589
mov eax, dword [ebx + 0x4f0]
mov dword [esp + 0x30], eax
cmp edi, eax
jbe 0x47d5df
mov eax, dword [0x67cc30]
push eax
call fcn.004ba848
mov eax, dword [0x67cc2c]
add esp, 4
cmp eax, 0xffffffff
je 0x47d5ae
push eax
call fcn.004ba848
add esp, 4
push 0x6dba
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x47d5d0
jmp 0x47d36a
push 0x6dbb
lea ecx, [esp + 0x18]
call fcn.00483985
push 0x510ab4
lea ecx, [esp + 0x18]
call fcn.004064a0
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x354]
call fcn.004cad9b
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x628], 5
call fcn.0040b0a0
lea ecx, [esp + 0x48]
mov byte [esp + 0x624], 2
call fcn.00402a90
push 0x510ab0
lea ecx, [esp + 0x18]
call fcn.004064a0
shr edi, 9
push edi
lea ecx, [esp + 0x13c]
push 0x510aa4
push ecx
call fcn.004b00c6
add esp, 0xc
lea edx, [esp + 0x138]
push edx
lea ecx, [esp + 0x18]
call fcn.004064a0
lea ecx, [esp + 0x24]
call fcn.00402a90
lea ecx, [esp + 0x350]
mov byte [esp + 0x624], 0
call fcn.004ca9e5
mov edi, dword [esp + 0x2c]
mov eax, dword [ebx + 0x4c4]
test eax, eax
jne 0x47d718
mov al, byte [esp + 0x19]
test al, al
jne 0x47d718
mov eax, dword [ebx + 0x1660]
mov ecx, 0x10
cmp eax, ecx
jl 0x47d722
jmp 0x47d71d
push edi
push esi
call fcn.0047bad0
mov eax, dword [ebx + 0xc]
add esp, 8
push 0
push 1
push 0x40c
push eax
mov dword [ebx + 0x10], 2
call dword [0x50694c]
mov ecx, dword [esp + 0x10]
push ecx
call fcn.004b155c
add esp, 4
lea ecx, [esp + 0x350]
mov byte [esp + 0x624], 0
call fcn.004ca9e5
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x624], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x47edd7
mov ecx, 0x10
mov byte [esp + 0x23], 1
mov eax, dword [ebx + 0x4bc]
test eax, eax
je 0x47d734
cmp dword [ebx + 0x1660], ecx
jl 0x47d746
mov eax, dword [ebx + 0x4c0]
test eax, eax
je 0x47d74b
cmp dword [ebx + 0x1660], ecx
jl 0x47d74b
mov byte [esp + 0x67], 1
mov al, byte [esp + 0x19]
test al, al
je 0x47d76a
mov al, byte [esp + 0x23]
test al, al
je 0x47d76a
mov eax, dword [ebx + 0x4cc]
test eax, eax
je 0x47d76a
mov byte [esp + 0x2b], 1
mov eax, dword [ebx + 0x1660]
cmp eax, ecx
jl 0x47d7c9
cmp dword [ebx + 0x5c0], 1
jne 0x47d797
mov eax, dword [ebx + 0x15f0]
mov ecx, dword [ebx + 0x1658]
push eax
push ecx
push edi
push esi
call fcn.0041d620
add esp, 0x10
jmp 0x47d80a
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x47d7b6
mov edx, dword [ebx + 0x1658]
push 0xffff
push edx
push edi
push esi
call fcn.0041d620
add esp, 0x10
jmp 0x47d80a
cmp eax, 2
jne 0x47d80a
mov eax, dword [ebx + 0x50c]
imul eax, eax, 0x569
jmp 0x47d783
cmp eax, 3
jne 0x47d80a
cmp dword [ebx + 0x5c0], 1
jne 0x47d7e0
mov edx, dword [ebx + 0x15f0]
push edx
jmp 0x47d800
mov eax, dword [ebx + 0x24]
test eax, eax
jne 0x47d7ee
push 0xffff
jmp 0x47d800
cmp eax, 2
jne 0x47d80a
mov eax, dword [ebx + 0x50c]
imul eax, eax, 0xb1
push eax
push edi
push esi
call fcn.0041a610
add esp, 0xc
lea ecx, [esp + 0x2e8]
push ecx
push 0x40
push 5
push edi
push esi
call fcn.0041d6f0
movzx edx, byte [esp + 0x2fd]
push 0
push edi
push esi
mov dword [esp + 0x58], edx
call fcn.0041bf20
mov eax, dword [ebx + 0x1660]
add esp, 0x20
cmp eax, 0x10
mov dword [esp + 0x78], 0x1194
jl 0x47d862
mov dword [esp + 0x3c], 0
mov dword [esp + 0x44], 0x20
mov dword [esp + 0x78], 0x1180
jmp 0x47d883
mov eax, dword [ebx + 0x4b4]
test eax, eax
je 0x47d87b
mov byte [esp + 0x1a], 1
mov dword [esp + 0x3c], 0
jmp 0x47d888
mov dword [esp + 0x3c], 0xffffff6a
mov byte [esp + 0x1a], 2
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x44]
mov eax, edi
cdq
idiv ecx
test edx, edx
je 0x47d8a7
lea eax, [edi + ecx - 1]
cdq
idiv ecx
imul eax, ecx
mov dword [esp + 0x5c], eax
mov edx, dword [esp + 0x38]
xor eax, eax
mov ecx, 0x19
lea edi, [esp + 0xd0]
rep stosd dword es:[edi], eax
mov al, byte [esp + 0x1a]
lea ecx, [esp + 0xd0]
push ecx
mov byte [esp + 0xda], al
mov eax, dword [esp + 0x30]
push edx
push eax
push esi
mov byte [esp + 0xe4], 5
mov byte [esp + 0xe5], 0x32
mov byte [esp + 0xf3], 0x96
call fcn.0041acf0
mov al, byte [esp + 0x29]
add esp, 0x10
test al, al
je 0x47d907
mov eax, dword [ebx + 0x4d8]
test eax, eax
je 0x47d915
mov cl, byte [esp + 0x1a]
or cl, 0x10
mov byte [esp + 0xd6], cl
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x2c]
lea edx, [esp + 0xd0]
push edx
push eax
push edi
push esi
call fcn.0041acf0
mov eax, dword [esp + 0x48]
mov cl, byte [esp + 0x2a]
lea edx, [esp + 0xe0]
push edx
push eax
push edi
push esi
mov byte [esp + 0xf6], cl
call fcn.0041acf0
mov al, byte [esp + 0x39]
add esp, 0x20
test al, al
je 0x47d961
mov eax, dword [ebx + 0x4d8]
test eax, eax
je 0x47d96e
mov al, byte [esp + 0x1a]
or al, 0x10
mov byte [esp + 0xd6], al
mov ecx, dword [esp + 0x10]
push ecx
push 0x20
push edi
push esi
call fcn.0041ac30
mov edx, dword [esp + 0x20]
push edx
push edi
push esi
call fcn.0041be80
mov al, byte [esp + 0x3f]
add esp, 0x1c
test al, al
je 0x47d9b5
mov eax, dword [ebx + 0x1660]
cmp eax, 0x10
jl 0x47d9a3
cmp eax, 0x15
jne 0x47d9b5
mov byte [esp + 0xd7], 4
mov byte [esp + 0xd8], 8
jmp 0x47d9c5
mov byte [esp + 0xd7], 0
mov byte [esp + 0xd8], 0
mov eax, dword [ebx + 0x4b8]
push eax
push edi
push esi
call fcn.0041d7c0
lea ecx, [esp + 0x2f4]
push ecx
push 0x40
push 5
push edi
push esi
call fcn.0041d6f0
mov al, byte [esp + 0x30a]
add esp, 0x20
test al, 0x40
je 0x47d9fc
or byte [esp + 0xd6], 0x40
mov eax, dword [esp + 0x60]
mov edx, dword [ebx + 0x1658]
push eax
mov dword [esp + 0x28], 0
mov dword [esp + 0x20], edx
call fcn.00445600
add esp, 4
test al, al
je 0x47da33
mov eax, dword [esp + 0x1c]
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
shl eax, 5
mov dword [esp + 0x1c], eax
mov al, byte [esp + 0x2b]
test al, al
mov eax, dword [esp + 0x40]
je 0x47da62
test eax, eax
jbe 0x47da6c
mov ecx, dword [esp + 0x30]
add ecx, 5
cmp eax, ecx
jbe 0x47da59
mov byte [esp + 0x2b], 0
mov dword [esp + 0x1c], eax
jmp 0x47da79
add eax, 5
mov dword [esp + 0x1c], eax
jmp 0x47da79
test eax, eax
jbe 0x47da6c
mov dword [esp + 0x1c], eax
jmp 0x47da79
mov edx, dword [esp + 0x60]
push edx
call fcn.00445600
add esp, 4
mov ecx, dword [esp + 0x38]
lea eax, [esp + 0xd0]
push eax
push ecx
push edi
push esi
call fcn.0041acf0
add esp, 0x10
cmp eax, 1
je 0x47daca
mov edx, dword [ebx + 0xc]
push 0
push 1
push 0x40c
push edx
mov dword [ebx + 0x10], 4
call dword [0x50694c]
push 1
push edi
push esi
call fcn.0041bf20
mov eax, dword [esp + 0x1c]
push eax
call fcn.004b155c
add esp, 0x10
jmp 0x47edb8
mov eax, dword [ebx + 0x4d0]
test eax, eax
jne 0x47db93
cmp dword [ebx + 0x4b4], 1
je 0x47daf5
cmp dword [ebx + 0x1660], 0x10
jge 0x47daf5
mov eax, dword [esp + 0x1c]
sub eax, 0x96
jmp 0x47db55
mov eax, dword [esp + 0x60]
push eax
call fcn.00444e00
add esp, 4
test al, al
jne 0x47db59
mov ecx, dword [esp + 0x10]
push ecx
push 0x1c
push 0
push 0
push edi
push esi
call fcn.0041a830
mov edx, dword [esp + 0x28]
movzx ecx, byte [edx + 0x19]
mov dword [esp + 0x48], eax
movzx eax, byte [edx + 0x1a]
movzx edx, byte [edx + 0x1b]
shl ecx, 8
add ecx, eax
mov eax, dword [ebx + 0x1658]
shl ecx, 8
add ecx, edx
add esp, 0x18
cmp ecx, eax
mov dword [esp + 0x1c], ecx
jge 0x47db55
cmp dword [esp + 0x30], 1
jne 0x47db55
cmp dword [esp + 0x60], 0x17
jne 0x47db59
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x4bc]
test eax, eax
je 0x47db76
cmp dword [ebx + 0x1660], 0x10
jge 0x47db76
mov eax, dword [ebx + 0x4ec]
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x4c0]
test eax, eax
je 0x47db93
cmp dword [ebx + 0x1660], 0x10
jl 0x47db93
mov ecx, dword [ebx + 0x4f0]
mov dword [esp + 0x1c], ecx
mov al, byte [esp + 0x19]
test al, al
je 0x47dc18
push 0x96000
call fcn.004b01f6
mov dword [esp + 0x28], eax
mov al, byte [esp + 0x2f]
add esp, 4
test al, al
mov dword [esp + 0x38], 0
je 0x47dbdd
mov edx, dword [esp + 0x60]
push edx
mov dword [esp + 0x3c], 1
call fcn.00445600
add esp, 4
test al, al
je 0x47dbdd
mov dword [esp + 0x38], 3
mov eax, dword [esp + 0x60]
push eax
call fcn.00444f00
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x3c]
add esp, 4
cmp ecx, 0x15f90
push eax
mov eax, dword [esp + 0x28]
push ecx
jge 0x47dc08
add edx, 0x1f4
jmp 0x47dc0e
add edx, 0x1388
push edx
push eax
call fcn.0044f100
add esp, 0x10
mov eax, dword [ebx + 0x4b4]
test eax, eax
jne 0x47de27
cmp dword [ebx + 0x1660], 0x10
jge 0x47de27
mov al, byte [esp + 0x23]
test al, al
mov byte [esp + 0x8c], 1
mov byte [esp + 0x8d], 0
mov byte [esp + 0x8e], 0
mov byte [esp + 0x8f], 1
mov byte [esp + 0x90], 0
mov byte [esp + 0x91], 0
mov byte [esp + 0x92], 0
mov byte [esp + 0x93], 0
mov byte [esp + 0x94], 1
mov byte [esp + 0x95], 1
mov byte [esp + 0x96], 0
mov byte [esp + 0x97], 0
mov byte [esp + 0x98], 0
mov byte [esp + 0x99], 0
mov byte [esp + 0x9a], 0
mov byte [esp + 0x9b], 0
mov byte [esp + 0x9c], 1
mov byte [esp + 0x9d], 1
mov byte [esp + 0x9e], 1
mov byte [esp + 0x9f], 0
mov byte [esp + 0xa0], 0
mov byte [esp + 0xa1], 0
mov byte [esp + 0xa2], 2
mov byte [esp + 0xa3], 0
mov byte [esp + 0xa4], 1
mov byte [esp + 0xa5], 0xaa
mov byte [esp + 0xa6], 1
mov byte [esp + 0xa7], 1
mov byte [esp + 0xa8], 0
je 0x47dd5e
xor eax, eax
jmp 0x47dd30
mov byte [esp + eax*8 + 0x8c], 0x41
inc eax
cmp eax, 4
jl 0x47dd30
mov byte [esp + 0x9f], 0x10
mov byte [esp + 0x97], 0x10
mov byte [esp + 0xa7], 0x14
mov byte [esp + 0x8f], 0x14
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x1c]
sub eax, ecx
mov ecx, dword [esp + 0x5c]
cdq
idiv ecx
imul eax, ecx
mov ecx, dword [esp + 0x78]
lea ecx, [eax + ecx + 0x96]
mov al, byte [esp + 0x19]
test al, al
je 0x47dd8f
mov ecx, dword [esp + 0x1c]
add ecx, 0x96
mov eax, 0x7482296b
imul ecx
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add eax, edx
mov byte [esp + 0xa9], al
mov eax, ecx
cdq
mov ecx, 0x4b
idiv ecx
mov ecx, 0x3c
mov dword [esp + 0x48], edx
cdq
idiv ecx
lea eax, [esp + 0x8c]
push eax
push 0x20
push edi
push esi
mov byte [esp + 0xba], dl
mov dl, byte [esp + 0x58]
mov byte [esp + 0xbb], dl
call fcn.0041a7d0
add esp, 0x10
cmp eax, 1
je 0x47de27
mov ecx, dword [ebx + 0xc]
push 0
push 1
push 0x40c
push ecx
mov dword [ebx + 0x10], 4
call dword [0x50694c]
mov edx, dword [esp + 0x24]
push edx
call fcn.004b155c
push 1
push edi
push esi
call fcn.0041bf20
mov eax, dword [esp + 0x20]
push eax
call fcn.004b155c
add esp, 0x14
jmp 0x47edb8
cmp dword [esp + 0x7c], 2
jne 0x47e07d
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x78]
add ecx, eax
cmp dword [esp + 0x40], ecx
mov dword [ebx + 0x10], 5
jae 0x47deb3
mov edx, dword [esp + 0x24]
push edx
call fcn.004b155c
push 1
push edi
push esi
call fcn.0041bf20
mov eax, dword [esp + 0x20]
push eax
call fcn.004b155c
add esp, 0x14
push 0x6df2
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x47de84
mov edx, dword [ebx + 0xc]
lea ecx, [esp + 0x138]
push ecx
push 1
push 0x40c
push edx
mov dword [ebx + 0x10], 8
call dword [0x50694c]
jmp 0x47edb8
call fcn.00449e50
cmp eax, 1
mov dword [0x67cd54], eax
jge 0x47decc
mov eax, 0x140
mov dword [0x67cd54], eax
imul eax, dword [esp + 0x44]
shl eax, 0xb
push eax
call fcn.004b01f6
add esp, 4
test eax, eax
mov dword [0x67cd50], eax
jne 0x47df24
push eax
mov eax, dword [ebx + 0xc]
push 1
push 0x40c
push eax
mov dword [ebx + 0x10], 4
call dword [0x50694c]
mov ecx, dword [esp + 0x24]
push ecx
call fcn.004b155c
push 1
push edi
push esi
call fcn.0041bf20
mov edx, dword [esp + 0x20]
push edx
call fcn.004b155c
add esp, 0x14
jmp 0x47edb8
mov eax, dword [0x67cd54]
imul eax, dword [esp + 0x44]
shl eax, 0xb
lea ecx, [eax + 0x1e8480]
push ecx
add eax, 0xf4240
push eax
call dword [0x5064cc]
push eax
call dword [0x506420]
mov edx, dword [0x67cd54]
imul edx, dword [esp + 0x44]
mov eax, dword [0x67cd50]
shl edx, 0xb
push edx
push eax
call dword [0x506424]
test eax, eax
jne 0x47dfae
push edi
push esi
call fcn.0047bad0
add esp, 8
push 0x6df4
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
nop
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x47df90
lea ecx, [esp + 0x518]
mov dword [ebx + 0x10], 8
push ecx
jmp 0x47ed85
mov eax, dword [esp + 0x44]
xor ecx, ecx
mov edx, eax
mov dword [0x67cd3c], eax
mov eax, dword [0x67cd54]
shl edx, 0xb
cmp eax, ecx
mov dword [0x67cd4c], ecx
mov dword [0x67cd48], ecx
mov dword [0x67cd44], ecx
mov dword [0x67cd40], edx
mov dword [esp + 0x58], ecx
jle 0x47e007
push ebx
call fcn.0047bbd0
add esp, 4
test eax, eax
je 0x47e278
mov eax, dword [esp + 0x58]
mov ecx, dword [0x67cd54]
inc eax
cmp eax, ecx
mov dword [esp + 0x58], eax
jl 0x47dfe3
xor eax, eax
push eax
push 1
mov dword [0x67cd4c], eax
mov dword [0x67cd48], eax
mov eax, dword [ebx + 0xc]
push 0x40c
push eax
mov dword [ebx + 0x10], 9
call dword [0x50694c]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
lea esp, [esp]
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x47e040
mov edx, dword [ebx + 0xc]
lea ecx, [esp + 0x138]
push ecx
push 1
push 0x40c
push edx
mov dword [ebx + 0x10], 5
call dword [0x50694c]
push 0
push 0
push 0
push 0
push ebx
push 0x47bc90
call fcn.004d8a2b
cmp dword [ebx + 0x1660], 0x14
jne 0x47e0f3
mov eax, dword [esp + 0x10]
push eax
push 0x20
push edi
push esi
call fcn.0041ac30
add esp, 0x10
cmp eax, 1
jne 0x47e0f3
mov ecx, dword [esp + 0x10]
test byte [ecx + 7], 3
jne 0x47e0f3
lea edx, [esp + 0x4c]
push edx
push 0xc
mov al, 0xff
push 0x11
push edi
push esi
mov byte [esp + 0x60], 0
mov byte [esp + 0x61], 0
mov byte [esp + 0x62], 0
mov byte [esp + 0x63], 8
mov byte [esp + 0x64], al
mov byte [esp + 0x65], al
mov byte [esp + 0x66], al
mov byte [esp + 0x67], al
mov byte [esp + 0x68], 0x98
mov byte [esp + 0x69], 0
mov byte [esp + 0x6a], 0
mov byte [esp + 0x6b], 0
call fcn.0041bfb0
add esp, 0x14
mov eax, dword [ebx + 0x1660]
cmp eax, 0x20
jl 0x47e167
cmp eax, 0x22
jg 0x47e167
mov ecx, dword [esp + 0x1c]
mov edx, ecx
sar edx, 0x10
mov byte [esp + 0x51], dl
mov edx, ecx
sar edx, 8
cmp eax, 0x21
mov byte [esp + 0x4c], 0
mov byte [esp + 0x4d], 0x82
mov byte [esp + 0x4e], 0
mov byte [esp + 0x4f], 8
mov byte [esp + 0x50], 0
mov byte [esp + 0x54], 0
mov byte [esp + 0x55], 0
mov byte [esp + 0x56], 8
mov byte [esp + 0x57], 0
mov byte [esp + 0x52], dl
mov byte [esp + 0x53], cl
jne 0x47e154
mov byte [esp + 0x54], 1
lea eax, [esp + 0x4c]
push eax
push 0xc
push 0x11
push edi
push esi
call fcn.0041bfb0
add esp, 0x14
mov eax, dword [ebx + 0x1660]
cmp eax, 0x30
jl 0x47e1d9
cmp eax, 0x32
jg 0x47e1d9
cmp dword [ebx + 0x1664], 2
mov byte [esp + 0x4c], 0
mov byte [esp + 0x4d], 0x82
mov byte [esp + 0x4e], 0
mov byte [esp + 0x4f], 8
mov byte [esp + 0x50], 0
mov byte [esp + 0x51], 0
mov byte [esp + 0x52], 0
mov byte [esp + 0x53], 0
mov byte [esp + 0x54], 0x54
mov byte [esp + 0x55], 0
mov byte [esp + 0x56], 0
mov byte [esp + 0x57], 0
jne 0x47e1c6
mov byte [esp + 0x4d], 0
mov byte [esp + 0x54], 0x5c
lea ecx, [esp + 0x4c]
push ecx
push 0xc
push 0x11
push edi
push esi
call fcn.0041bfb0
add esp, 0x14
cmp dword [ebx + 0x1660], 0x10
jl 0x47e24b
push 0
push 0
push 0
push 0
push edi
push esi
call fcn.0041aa70
mov edx, dword [esp + 0x28]
push edx
push 0x20
push edi
push esi
call fcn.0041ac30
mov eax, dword [esp + 0x38]
push eax
push 0x24
push 1
push 1
push edi
push esi
call fcn.0041a830
mov eax, dword [ebx + 0x1660]
add esp, 0x40
cmp eax, 0x10
jl 0x47e24b
mov eax, dword [esp + 0x60]
cmp eax, 0x12
je 0x47e24b
cmp eax, 0x17
je 0x47e24b
mov ecx, eax
push ecx
call fcn.00444e20
add esp, 4
test al, al
jne 0x47e24b
mov edx, dword [esp + 0x1c]
push edx
push edi
push esi
call fcn.0041a8a0
add esp, 0xc
mov al, byte [esp + 0x2b]
test al, al
je 0x47e316
mov eax, dword [esp + 0x60]
push eax
call fcn.00445600
add esp, 4
test al, al
je 0x47e311
mov ecx, dword [esp + 0x1c]
sub ecx, 0x20
jmp 0x47e31a
push edi
push esi
call fcn.0047bad0
add esp, 8
push 0xe2
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x47e2a0
lea eax, [esp + 0x518]
mov dword [ebx + 0x10], 8
push eax
mov ecx, dword [ebx + 0xc]
push 1
push 0x40c
push ecx
call dword [0x50694c]
mov edx, dword [0x67cd50]
push edx
call fcn.004b155c
mov eax, dword [esp + 0x28]
push eax
call fcn.004b155c
mov ecx, dword [esp + 0x18]
push ecx
call fcn.004b155c
add esp, 0xc
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x624], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x47edd7
sub dword [esp + 0x1c], 5
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x5c]
mov eax, ecx
sub eax, edi
cdq
idiv esi
mov dl, byte [esp + 0x19]
test dl, dl
mov dword [esp + 0x58], eax
je 0x47e340
imul eax, esi
sub ecx, eax
sub ecx, edi
mov dword [esp + 0x6c], ecx
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x44]
cdq
idiv edi
mov esi, dword [esp + 0x3c]
test esi, esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x48], eax
je 0x47e434
mov ecx, edi
mov edi, dword [esp + 0x10]
imul ecx, ecx, 0x930
mov edx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, esi
cdq
idiv dword [esp + 0x44]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x38], 0
neg eax
test eax, eax
mov dword [esp + 0x74], eax
jle 0x47e434
lea esp, [esp]
mov al, byte [esp + 0x23]
test al, al
je 0x47e3c5
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x38]
push ecx
push 0x800
push edi
push esi
push edx
push eax
jmp 0x47e3e0
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x38]
push edx
push 0x930
push edi
push esi
push eax
push ecx
call fcn.0047c1d0
add esp, 0x1c
cmp eax, 1
je 0x47e415
call fcn.00418ef0
and eax, 0xffffff00
cmp eax, 0x20400
jne 0x47e4c8
mov edx, dword [esp + 0x38]
dec edx
push 0xa
mov dword [esp + 0x3c], edx
call dword [0x5064e0]
sub esi, edi
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x74]
add esi, edi
inc eax
cmp eax, ecx
mov dword [esp + 0x38], eax
jl 0x47e3a0
mov edi, dword [esp + 0x44]
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x78]
cdq
idiv edi
mov dword [esp + 0x3c], 0
test eax, eax
mov dword [esp + 0x74], eax
jle 0x47e60e
mov ecx, dword [esp + 0x24]
mov eax, edi
shl eax, 0xb
mov dword [esp + 0x40], eax
mov eax, esi
shl eax, 0xb
add eax, ecx
mov dword [esp + 0x30], eax
jmp 0x47e470
mov al, byte [esp + 0x19]
test al, al
je 0x47e554
mov al, byte [esp + 0x1b]
test al, al
je 0x47e54f
test esi, esi
jl 0x47e4ec
mov eax, 0x12c
sub eax, edi
cmp esi, eax
jge 0x47e4ec
mov eax, dword [ebx + 0x4d0]
test eax, eax
jne 0x47e4ec
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x10]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x44]
jmp 0x47e554
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x34]
push edx
push eax
mov dword [esp + 0x24], esi
call fcn.0047bad0
add esp, 8
mov dword [ebx + 0x10], 4
push 0
jmp 0x47e2b9
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x10]
mov edx, dword [ebx + 0x1660]
push 0x64
push eax
push ecx
push edx
push edi
push esi
call fcn.0047bce0
add esp, 0x18
test eax, eax
jne 0x47e554
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
push ecx
push edx
call fcn.0047bad0
add esp, 8
push 0xe2
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
lea ebx, [ebx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x47e540
jmp 0x47e2aa
mov byte [esp + 0x1b], 1
mov al, byte [esp + 0x23]
test al, al
je 0x47e579
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x38]
push ecx
push 0x800
push edi
push esi
push edx
push eax
jmp 0x47e594
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x38]
push edx
push 0x930
push edi
push esi
push eax
push ecx
call fcn.0047c1d0
add esp, 0x1c
cmp eax, 1
je 0x47e5dc
call fcn.00418ef0
and eax, 0xffffff00
cmp eax, 0x20400
jne 0x47e76a
mov eax, dword [esp + 0x3c]
dec eax
push 0xa
mov dword [esp + 0x40], eax
call dword [0x5064e0]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x40]
sub esi, edi
sub eax, edx
mov dword [esp + 0x30], eax
mov byte [esp + 0x1b], 0
cmp byte [ebx], 0
jne 0x47ec9a
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x3c]
add esi, edi
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x74]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x3c], eax
jl 0x47e470
mov dword [esp + 0xb8], 0
call fcn.00449ca0
cmp eax, 1
mov dword [esp + 0x74], eax
jge 0x47e62f
mov dword [esp + 0x74], 0x10
call dword [0x5064f8]
mov dword [esp + 0x88], eax
xor eax, eax
mov ecx, 0x64
mov dword [ebx + 0xdd8], eax
mov dword [ebx + 0xddc], eax
mov dword [ebx + 0x5cc], ecx
mov dword [ebx + 0x5d0], eax
mov dword [ebx + 0xde8], ecx
mov dword [ebx + 0xdec], eax
call fcn.00442a70
mov eax, dword [esp + 0x48]
imul eax, edi
mov dword [esp + 0xbc], eax
xor ecx, ecx
mov eax, edi
shl eax, 0xb
mov dword [esp + 0x70], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0xb0], ecx
lea eax, [ebx + 0xdf0]
lea ecx, [ebx + 0x1678]
mov dword [ebx + 0x10], 1
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc0], ecx
mov eax, dword [esp + 0xb0]
cdq
idiv dword [esp + 0x58]
mov edx, dword [ebx + 0xc]
push eax
push 0
push 0x40c
push edx
call dword [0x50694c]
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0xbc]
mov ecx, esi
sub ecx, eax
mov eax, dword [esp + 0xc0]
mov dword [eax - 4], ecx
mov dword [eax], edx
call fcn.00442a80
fld qword [0x506c80]
mov ecx, dword [esp + 0x24]
fstp qword [esp + 0xc8]
xor eax, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb4], eax
mov eax, esi
shl eax, 0xb
add eax, ecx
mov dword [esp + 0x5c], eax
nop
mov al, byte [esp + 0x19]
test al, al
je 0x47e824
mov al, byte [esp + 0x1b]
test al, al
je 0x47e81f
mov eax, 0x12c
sub eax, edi
cmp esi, eax
jge 0x47e7b2
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x5c]
mov edi, dword [esp + 0x10]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x44]
jmp 0x47e824
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
push eax
push ecx
call fcn.0047bad0
mov edx, dword [ebx + 0xc]
add esp, 8
push 0
push 1
push 0x40c
push edx
mov dword [ebx + 0x10], 4
call dword [0x50694c]
mov eax, dword [esp + 0x24]
push eax
call fcn.004b155c
mov ecx, dword [esp + 0x14]
push ecx
call fcn.004b155c
add esp, 8
jmp 0x47e2ed
fld qword [esp + 0x80]
call fcn.004afb60
mov ecx, dword [esp + 0x10]
mov edx, dword [ebx + 0x1660]
push eax
mov eax, dword [esp + 0x80]
push eax
push ecx
push edx
push edi
push esi
call fcn.0047bce0
add esp, 0x18
test eax, eax
jne 0x47e824
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
push ecx
push edx
call fcn.0047bad0
add esp, 8
push 0xe2
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
mov edi, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x47e810
jmp 0x47e2aa
mov byte [esp + 0x1b], 1
mov al, byte [esp + 0x23]
test al, al
je 0x47e849
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x38]
push ecx
push 0x800
push edi
push esi
push edx
push eax
jmp 0x47e864
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x38]
push edx
push 0x930
push edi
push esi
push eax
push ecx
call fcn.0047c1d0
add esp, 0x1c
cmp eax, 1
mov dword [esp + 0x30], eax
je 0x47e8b0
call fcn.00418ef0
and eax, 0xffffff00
cmp eax, 0x20400
jne 0x47ed6a
mov eax, dword [esp + 0x38]
dec eax
push 0xa
mov dword [esp + 0x3c], eax
call dword [0x5064e0]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x40]
sub esi, edi
sub eax, edx
mov dword [esp + 0x5c], eax
mov byte [esp + 0x1b], 0
cmp byte [ebx], 0
jne 0x47ec9a
mov eax, dword [esp + 0xb8]
test eax, eax
jne 0x47eab7
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x200]
push eax
push ecx
push edx
call fcn.0041add0
add esp, 0xc
cmp eax, 1
jne 0x47e9e6
movzx eax, byte [esp + 0x205]
movzx ecx, byte [esp + 0x206]
movzx edx, byte [esp + 0x207]
shl eax, 8
add eax, ecx
movzx ecx, byte [esp + 0x209]
shl eax, 8
add eax, edx
movzx edx, byte [esp + 0x20a]
shl ecx, 8
add ecx, edx
movzx edx, byte [esp + 0x20b]
shl ecx, 8
mov dword [esp + 0x1c], eax
add ecx, edx
sub eax, ecx
mov dword [esp + 0x3c], eax
fild dword [esp + 0x3c]
fmul qword [0x506c80]
fidiv dword [esp + 0x1c]
fst qword [esp + 0x80]
fcomp qword [esp + 0xc8]
fnstsw ax
test ah, 5
jp 0x47e96a
fld qword [esp + 0x80]
fstp qword [esp + 0xc8]
fild dword [ebx + 0x5cc]
fcomp qword [esp + 0x80]
fnstsw ax
test ah, 0x41
jne 0x47e990
fld qword [esp + 0x80]
call fcn.004afb60
mov dword [ebx + 0x5cc], eax
fild dword [ebx + 0x5d0]
fcomp qword [esp + 0x80]
fnstsw ax
test ah, 5
jp 0x47e9b6
fld qword [esp + 0x80]
call fcn.004afb60
mov dword [ebx + 0x5d0], eax
mov eax, dword [ebx + 0xdd8]
fild dword [ebx + 0xdd8]
test eax, eax
jge 0x47e9cc
fadd qword [0x50a8e8]
fadd qword [esp + 0x80]
call fcn.004afb60
mov dword [ebx + 0xdd8], eax
inc dword [ebx + 0xddc]
jmp 0x47e9f3
fld qword [0x507eb8]
fstp qword [esp + 0x80]
mov eax, dword [ebx + 0x5c0]
test eax, eax
je 0x47eab7
call dword [0x5064f8]
sub eax, dword [esp + 0x88]
cmp eax, 0x190
jbe 0x47eab7
call fcn.00478480
cmp eax, 0x64
mov dword [esp + 0x3c], eax
jle 0x47ea32
mov eax, 0x64
mov dword [esp + 0x3c], eax
jmp 0x47ea36
mov eax, dword [esp + 0x3c]
cmp eax, dword [ebx + 0xde8]
jge 0x47ea44
mov dword [ebx + 0xde8], eax
cmp eax, dword [ebx + 0xdec]
jle 0x47ea52
mov dword [ebx + 0xdec], eax
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0xb4]
add eax, ecx
inc edx
mov dword [esp + 0xac], eax
mov dword [esp + 0xb4], edx
mov dword [ebx + 0x166c], esi
call dword [0x5064f8]
fld qword [esp + 0xc8]
mov dword [esp + 0x88], eax
call fcn.004afb60
mov edx, dword [esp + 0x3c]
push 1
push 1
mov dword [ebx + 0x5c8], eax
mov eax, dword [ebx + 0xc]
push 0x40c
push eax
mov dword [ebx + 0xde4], edx
call dword [0x50694c]
mov eax, dword [esp + 0xb8]
inc eax
cdq
idiv dword [esp + 0x74]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x5c]
add eax, ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x38]
add esi, edi
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x38], eax
mov dword [esp + 0xb8], edx
jge 0x47eafb
cmp dword [esp + 0x30], 0xfffffffe
jne 0x47e720
cmp dword [esp + 0x30], 1
jne 0x47eb87
mov eax, dword [esp + 0xc4]
fld qword [esp + 0xc8]
fstp qword [eax - 0x818]
fild dword [esp + 0xac]
fidiv dword [esp + 0xb4]
fstp qword [eax]
call fcn.00442a90
mov ecx, dword [esp + 0xc0]
mov eax, dword [esp + 0x70]
fstp qword [ecx + 4]
mov edx, dword [esp + 0xc4]
inc eax
push 0
add edx, 8
mov dword [ebx + 0x1670], eax
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xb4]
push 1
mov dword [esp + 0xcc], edx
mov edx, dword [ebx + 0xc]
push 0x40c
add eax, 0x64
add ecx, 0x10
push edx
mov dword [esp + 0xc0], eax
mov dword [esp + 0xd0], ecx
call dword [0x50694c]
mov eax, dword [esp + 0x70]
cmp eax, dword [esp + 0x58]
jl 0x47e6b1
mov eax, dword [esp + 0x6c]
test eax, eax
jle 0x47ed4b
cdq
idiv edi
test edx, edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x6c], eax
je 0x47ebb5
inc eax
mov dword [esp + 0x6c], eax
test eax, eax
mov dword [esp + 0x30], 0
jle 0x47ed4b
dec eax
mov dword [esp + 0xbc], eax
lea ecx, [ecx]
mov eax, dword [esp + 0xbc]
cmp dword [esp + 0x30], eax
jne 0x47ebe7
mov eax, dword [esp + 0x48]
test eax, eax
je 0x47ebe7
mov edi, eax
mov al, byte [esp + 0x1b]
test al, al
je 0x47ecb5
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x10]
mov eax, dword [ebx + 0x1660]
push 0x64
push ecx
push edx
push eax
push edi
push esi
call fcn.0047bce0
add esp, 0x18
test eax, eax
jne 0x47ecba
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
push eax
push ecx
mov dword [esp + 0x24], esi
call fcn.0047bad0
add esp, 8
push 0xe2
lea ecx, [esp + 0x18]
call fcn.00483985
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x138]
sub edx, eax
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x47ec50
mov eax, dword [ebx + 0xc]
lea edx, [esp + 0x518]
push edx
push 1
push 0x40c
push eax
mov dword [ebx + 0x10], 8
call dword [0x50694c]
mov ecx, dword [0x67cd50]
push ecx
call fcn.004b155c
mov edx, dword [esp + 0x28]
push edx
call fcn.004b155c
mov eax, dword [esp + 0x18]
push eax
jmp 0x47edb0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
push eax
push ecx
call fcn.0047bad0
mov dword [ebx + 0x10], 2
jmp 0x47ed80
mov byte [esp + 0x1b], 1
mov al, byte [esp + 0x23]
test al, al
je 0x47ecdf
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x38]
push edx
push 0x800
push edi
push esi
push eax
push ecx
jmp 0x47ecfa
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
push edx
mov edx, dword [esp + 0x38]
push eax
push 0x930
push edi
push esi
push ecx
push edx
call fcn.0047c1d0
add esp, 0x1c
cmp eax, 1
je 0x47ed30
call fcn.00418ef0
and eax, 0xffffff00
cmp eax, 0x20400
jne 0x47ed66
mov edx, dword [esp + 0x30]
dec edx
push 0xa
mov dword [esp + 0x34], edx
call dword [0x5064e0]
sub esi, edi
mov byte [esp + 0x1b], 0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x6c]
add esi, edi
inc eax
cmp eax, ecx
mov dword [esp + 0x30], eax
jl 0x47ebd0
mov dword [esp + 0x1c], esi
mov al, byte [esp + 0x67]
test al, al
jne 0x47edf8
mov eax, dword [esp + 0x58]
mov dword [ebx + 0x1670], eax
jmp 0x47ee02
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
push eax
push ecx
call fcn.0047bad0
mov dword [ebx + 0x10], 4
add esp, 8
push 0
mov edx, dword [ebx + 0xc]
push 1
push 0x40c
push edx
call dword [0x50694c]
mov eax, dword [0x67cd50]
push eax
call fcn.004b155c
mov ecx, dword [esp + 0x28]
push ecx
call fcn.004b155c
mov edx, dword [esp + 0x18]
push edx
call fcn.004b155c
add esp, 0xc
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x624], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47ede1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
xor eax, eax
mov ecx, dword [esp + 0x61c]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x70]
mov dword [ebx + 0x1670], ecx
mov al, byte [esp + 0x2b]
test al, al
je 0x47eecf
mov eax, dword [ebx + 0x162c]
lea esi, [ebx + 0x15fc]
or eax, 0x80
push 0x213c
push esi
mov dword [ebx + 0x162c], eax
call fcn.00419aa0
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x18]
mov dword [ebx + 0x3738], eax
xor eax, eax
mov ecx, 0x4000
push edx
rep stosd dword es:[edi], eax
mov dword [esp + 0x78], 5
call fcn.00445600
mov edi, dword [esp + 0x1c]
add esp, 0xc
test al, al
mov ecx, 0x850
je 0x47ee73
add edi, 0xd800
mov dword [esp + 0x6c], 0x20
rep movsd dword es:[edi], dword [esi]
jmp 0x47ee80
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x34]
push 0x800
push edx
mov edx, dword [esp + 0x44]
push eax
push ecx
push edx
call fcn.0047c1d0
add esp, 0x1c
cmp eax, 1
je 0x47eecf
call fcn.00418ef0
and eax, 0xffffff00
cmp eax, 0x20400
jne 0x47ed6a
push 0xa
call dword [0x5064e0]
jmp 0x47ee80
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x34]
push 0
push 0
push 0
push 0
push edi
push esi
call fcn.0041aa70
mov eax, dword [ebx + 0x1660]
add esp, 0x18
cmp eax, 0x20
jl 0x47ef14
cmp eax, 0x32
jg 0x47ef14
push 1
push 1
push edi
push esi
call fcn.0041ae20
push 0
push 6
push edi
push esi
call fcn.0041ae20
add esp, 0x20
jmp 0x47ef52
cmp dword [ebx + 0x4b4], 1
je 0x47ef22
cmp eax, 0x10
jl 0x47ef52
push 1
push 1
push edi
push esi
call fcn.0041ae20
mov eax, dword [esp + 0x70]
add esp, 0x10
cmp eax, 0x1b
je 0x47ef44
cmp eax, 0x2b
je 0x47ef44
push 1
push 2
jmp 0x47ef48
push 0
push 5
push edi
push esi
call fcn.0041ae20
add esp, 0x10
push edi
push esi
mov dword [ebx + 0x10], 3
call fcn.0047bad0
mov al, byte [esp + 0x21]
add esp, 8
test al, al
push 0
je 0x47ef7d
mov eax, dword [ebx + 0xc]
push 0x80
push 0x40c
push eax
jmp 0x47ef88
mov ecx, dword [ebx + 0xc]
push 1
push 0x40c
push ecx
call dword [0x50694c]
mov edx, dword [0x67cd50]
push edx
call fcn.004b155c
mov eax, dword [esp + 0x28]
push eax
call fcn.004b155c
mov ecx, dword [esp + 0x18]
push ecx
call fcn.004b155c
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 0xc
mov dword [esp + 0x624], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47efda
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x61c]
pop edi
pop esi
mov eax, 1
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret