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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xcc
mov eax, dword [0x4010c0]
xor eax, esp
mov dword [esp + 0xc8], eax
mov eax, ecx
mov ecx, dword [ebp + 0x14]
push ebx
mov dword [esp + 0x10], eax
xor ebx, ebx
push esi
mov eax, dword [eax]
mov esi, edx
mov edx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x60], eax
mov dword [esp + 0x78], ecx
mov ecx, dword [ebp + 0x18]
mov eax, dword [edi + 0x50]
mov dword [esp + 0x28], eax
movzx eax, byte [edi + 0x3c]
mov dword [esp + 0x90], ecx
lea ecx, [edx + 0x50]
mov dword [esp + 0x84], ecx
imul ecx, eax, 0x48
mov eax, dword [edx + 4]
add eax, 8
mov dword [esp + 0x4c], edx
mov dword [esp + 0x34], esi
mov dword [esp + 0x80], edi
add eax, ecx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x88], eax
lea ecx, [edx + 0x1f0]
mov eax, dword [eax + 0x2c]
mov edx, eax
mov dword [esp + 0x54], eax
call fcn.004b6890
mov ecx, dword [esp + 0x4c]
not eax
and eax, dword [esp + 0x78]
not edx
and edx, dword [esp + 0x90]
mov dword [edi + 0x58], eax
mov dword [edi + 0x5c], edx
mov eax, dword [ecx + 0x48]
mov edx, dword [ecx + 0x4c]
mov ecx, dword [ebp + 0xc]
call fcn.004cc4e0
xor ecx, ecx
inc ecx
and eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x50], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0xc], eax
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [esp + 0x98], eax
mov dword [edi + 0x18], eax
cmp byte [edi + 0x3c], bl
jbe 0x4b2783
mov eax, dword [esp + 0x88]
test byte [eax + 0x24], 8
je 0x4b2783
mov eax, dword [ecx + 0x2c]
inc eax
push ebx
push eax
push ebx
mov dword [ecx + 0x2c], eax
mov ecx, esi
push 0x47
pop edx
mov dword [edi], eax
call fcn.004746eb
add esp, 0xc
mov eax, dword [ebp + 0xc]
mov ecx, eax
test eax, eax
jle 0x4b27ac
mov edx, dword [esp + 0x4c]
imul eax, eax, 0x60
add edx, 0x330
add eax, edx
cmp dword [eax - 0x38], ebx
jne 0x4b27ac
cmp dword [eax], ebx
jne 0x4b27ac
dec ecx
sub eax, 0x60
test ecx, ecx
jg 0x4b279b
imul eax, ecx, 0x60
mov ecx, dword [esp + 0x4c]
push 0xb
mov eax, dword [eax + ecx + 0x304]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x8c]
pop ecx
test byte [eax + 0x28], 0x20
je 0x4b2807
push dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
mov edx, ecx
mov ecx, dword [esp + 0x38]
push ebx
push esi
call fcn.004746eb
add esp, 0xc
push ebx
push dword [esp + 0x28]
push esi
mov esi, dword [esp + 0x40]
mov ecx, esi
push 0xc
pop edx
call fcn.004746eb
add esp, 0xc
mov dword [edi + 0x44], eax
mov byte [edi + 0x3d], 9
jmp 0x4b3e5e
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0x2c]
bt edx, 0xa
jae 0x4b2ba6
movzx eax, word [eax + 0x30]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
lea edx, [eax + 2]
call fcn.0048b563
mov ecx, ebx
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x1c], ecx
jbe 0x4b28df
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x38]
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x10], edx
test edx, edx
je 0x4b28cc
xor eax, eax
inc eax
test byte [edx + 0xc], al
je 0x4b29e5
mov edx, eax
xor eax, eax
shl edx, cl
cmp ecx, 0x1f
cmovbe eax, edx
mov edx, dword [esp + 0x28]
test dword [edx + 0x28], eax
je 0x4b29b9
mov ecx, dword [esp + 0x18]
mov edi, dword [ecx + 0x28]
inc dword [ecx + 0x2c]
mov esi, dword [ecx + 0x2c]
push edi
lea eax, [edi + 1]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
call fcn.004878e5
mov eax, dword [esp + 0x18]
mov edx, 0xae
pop ecx
mov ecx, dword [esp + 0x38]
add ecx, 2
push esi
mov esi, dword [esp + 0x38]
add eax, ecx
push eax
push edi
mov ecx, esi
call fcn.004746eb
mov edi, dword [esp + 0x8c]
add esp, 0xc
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, dword [esp + 0x1c]
jl 0x4b284b
mov eax, dword [esp + 0x28]
mov ecx, esi
push ebx
push dword [esp + 0x3c]
push dword [eax + 0x18]
push 0x47
pop edx
call fcn.004746eb
mov eax, dword [esp + 0x44]
add esp, 0xc
inc eax
mov ecx, esi
push ebx
push eax
push dword [esp + 0x24]
push 0x47
pop edx
call fcn.004746eb
mov ecx, dword [esp + 0x34]
add esp, 0xc
xor eax, eax
inc eax
test byte [ecx + 0x1c], al
push 0xffffffffffffffff
pop eax
push 0xfffffffffffffffa
pop edx
cmovne eax, edx
push eax
push dword [ecx + 0x24]
mov ecx, esi
push dword [esp + 0x40]
push dword [esp + 0x30]
push dword [esp + 0x64]
push 6
pop edx
call fcn.00474815
mov edx, dword [esp + 0x3c]
add esp, 0x14
mov eax, dword [esp + 0x60]
and dword [edx + 0x1c], 0xfffffffe
cmp byte [eax + 0x57], bl
je 0x4b2954
mov dword [edx + 0x24], ebx
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x4c]
mov dword [edi + 0x40], eax
push 0x3f
pop eax
cmp byte [ecx + 0x2e], bl
lea ecx, [eax + 0x79]
cmovne eax, ecx
mov ecx, ebx
mov byte [edi + 0x3d], al
mov eax, dword [esi + 0x6c]
mov dword [edi + 0x44], eax
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x1c], ecx
jbe 0x4b3e5e
mov eax, dword [edx + 0x38]
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x44], edx
cmp ecx, 0x10
jae 0x4b2a3c
mov eax, dword [esp + 0x28]
mov ax, word [eax + 0x22]
shr ax, cl
xor ecx, ecx
inc ecx
test cl, al
je 0x4b2a38
mov ecx, edi
call fcn.004b18cf
jmp 0x4b2b8a
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x10]
add eax, 2
add eax, ecx
push eax
push dword [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x24]
push edi
call fcn.004b1c1d
mov eax, dword [edi + 0x10]
add esp, 0x10
mov dword [esp + 0x24], eax
jmp 0x4b28c8
mov edx, dword [edx]
push eax
mov eax, dword [esp + 0x3c]
add eax, 2
mov edx, dword [edx + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x1c]
push eax
call fcn.004b2472
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
cmp byte [eax + 0xf], 0x4a
mov eax, dword [esp + 0x28]
jne 0x4b2a2f
test byte [eax + 0x1c], 2
je 0x4b2a2f
mov eax, dword [esp + 0x4c]
mov ecx, esi
push ebx
mov eax, dword [eax + 0x10]
push dword [eax + 0xc]
push ebx
push 0x47
pop edx
call fcn.004746eb
jmp 0x4b28c5
mov ecx, dword [esp + 0x14]
jmp 0x4b28d0
mov ecx, dword [esp + 0x14]
xor eax, eax
inc eax
test byte [edx + 0xc], al
je 0x4b2b8e
mov edx, eax
xor eax, eax
shl edx, cl
cmp ecx, 0x1f
cmovbe eax, edx
mov edx, dword [esp + 0x28]
test dword [edx + 0x28], eax
jne 0x4b2b92
mov eax, dword [esp + 0x60]
cmp byte [eax + 0x57], bl
jne 0x4b2b92
mov dword [esp + 0x10], ebx
cmp dword [edi + 0x48], ebx
jle 0x4b2af5
mov eax, dword [edi + 0x4c]
add eax, 4
mov dword [esp + 0x24], eax
mov edx, dword [eax]
mov ecx, esi
call fcn.00474f68
mov ecx, eax
mov al, byte [ecx]
mov byte [esp + 0x4b], al
cmp al, 0x5e
jne 0x4b2aa8
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
add esi, 2
add eax, esi
cmp dword [ecx + 0xc], eax
jmp 0x4b2abc
cmp al, 0x87
jne 0x4b2ac2
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
add esi, 2
add eax, esi
cmp dword [ecx + 8], eax
mov esi, dword [esp + 0x34]
je 0x4b2add
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x24]
inc ecx
add eax, 0x14
mov dword [esp + 0x10], ecx
mov dword [esp + 0x24], eax
cmp ecx, dword [edi + 0x48]
jl 0x4b2a81
jmp 0x4b2af5
push dword [ecx + 0xc]
movzx edx, byte [esp + 0x4f]
push dword [ecx + 8]
push dword [ecx + 4]
mov ecx, esi
call fcn.004746eb
add esp, 0xc
mov ecx, dword [esp + 0x18]
push ebx
push ebx
push 0x35
pop edx
call fcn.00485bff
mov edx, eax
mov eax, dword [esp + 0x68]
pop ecx
pop ecx
mov dword [esp + 0x10], edx
cmp byte [eax + 0x57], bl
jne 0x4b2b7f
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
test ecx, ecx
jle 0x4b2b2e
mov eax, dword [eax + 0x14]
imul ecx, ecx, 0x14
mov eax, dword [eax + ecx - 0xc]
mov ecx, dword [esp + 0x60]
mov dword [edx + 0xc], eax
mov edx, 0xb0
push ebx
call fcn.00485b64
mov edx, dword [esp + 0x14]
pop ecx
mov ecx, eax
mov dword [edx + 0x10], ecx
test ecx, ecx
je 0x4b2b78
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
add esi, 2
add eax, esi
push 0x10
mov dword [ecx + 0x1c], eax
push dword [edi + 0x18]
push edx
push dword [esp + 0x24]
call fcn.0048a31b
mov esi, dword [esp + 0x44]
add esp, 0x10
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x60]
mov dword [edx + 0xc], ebx
test edx, edx
je 0x4b2b8a
mov ecx, eax
call fcn.0048602a
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, dword [esp + 0x1c]
jl 0x4b2984
jmp 0x4b3e5e
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x4b2c78
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x38]
mov edx, dword [eax]
mov eax, dword [esp + 0x18]
inc dword [eax + 0x2c]
mov ecx, dword [eax + 0x2c]
push ecx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x54]
push ecx
push ebx
push edi
mov ecx, eax
call fcn.004b1c1d
mov edx, dword [esp + 0x20]
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x24], ecx
cmp ecx, edx
je 0x4b2bff
mov ecx, dword [esp + 0x18]
call fcn.0048b54a
mov ecx, dword [esp + 0x24]
mov eax, dword [edi + 0x10]
mov dword [esp + 0x10], eax
cmp dword [edi + 0x34], ebx
je 0x4b2c5d
push ebx
push eax
push ecx
push 0xd
pop edx
mov ecx, esi
call fcn.004746eb
add esp, 0xc
xor eax, eax
inc eax
mov ecx, esi
push eax
push dword [esp + 0x28]
push dword [esp + 0x18]
push dword [edi + 0x34]
push 0x40
pop edx
call fcn.00474a00
push dword [esp + 0xa0]
mov edx, dword [esp + 0x60]
push dword [esp + 0x8c]
mov ecx, dword [esp + 0x30]
push dword [esp + 0x28]
push dword [ebp + 0xc]
call fcn.004b2554
mov eax, dword [esp + 0x30]
add esp, 0x20
push dword [esp + 0x24]
mov ecx, esi
push eax
push dword [esp + 0x5c]
push 0x1e
pop edx
call fcn.004746eb
add esp, 0xc
jmp 0x4b3e23
mov ecx, 0x102
mov eax, edx
and eax, ecx
cmp eax, ecx
jne 0x4b2eae
mov dword [esp + 0x30], 0xb8
mov ecx, ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x10], ecx
test dl, 0x20
je 0x4b2cba
mov eax, dword [esp + 0x28]
push 4
mov eax, dword [eax + 0x38]
mov ecx, dword [eax]
pop eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x44], eax
jmp 0x4b2cbe
mov dword [esp + 0x44], ebx
test dl, 0x10
je 0x4b2cd7
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
mov eax, dword [eax + 0x38]
mov edx, dword [edx + eax]
mov dword [esp + 0x2c], edx
jmp 0x4b2cd9
mov edx, ebx
mov eax, dword [esp + 0x50]
test eax, eax
je 0x4b2ceb
mov dword [esp + 0x2c], ecx
mov ecx, edx
mov dword [esp + 0x10], ecx
test ecx, ecx
je 0x4b2d9e
mov edx, dword [ecx]
mov dword [esp + 0x1c], 0x17151618
mov dword [esp + 0x44], edx
mov ecx, dword [edx + 0x10]
call fcn.00485543
cmp eax, 1
jle 0x4b2d42
mov ecx, dword [esp + 0x18]
call fcn.0048b52b
mov edx, dword [edx + 0x10]
push 1
push eax
mov dword [esp + 0x18], eax
call fcn.004b2472
mov edx, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [esp + 0x44]
movzx eax, byte [ecx]
xor ecx, ecx
inc eax
inc ecx
and eax, 2
or eax, ecx
mov cl, byte [esp + eax + 0x1c]
jmp 0x4b2d79
lea eax, [esp + 0x70]
mov edx, ecx
mov ecx, dword [esp + 0x18]
push eax
call fcn.00489c23
mov edx, dword [esp + 0x14]
pop ecx
mov ecx, edi
mov dword [esp + 0x14], eax
call fcn.004b18cf
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x14]
movzx eax, byte [ecx]
mov cl, byte [esp + eax - 0x1a]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x10], eax
push edx
push dword [esp + 0x28]
movzx edx, cl
mov ecx, esi
push dword [esp + 0x5c]
call fcn.004746eb
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov ecx, dword [esp + 0x18]
call fcn.0048b54a
jmp 0x4b2dc3
mov edx, eax
mov ecx, esi
xor eax, eax
inc eax
push ebx
push dword [esp + 0x20]
xor edx, eax
push dword [esp + 0x5c]
lea edx, [edx*4 + 0x20]
call fcn.004746eb
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4b2e3f
mov eax, dword [eax]
inc dword [ecx + 0x2c]
mov edx, dword [ecx + 0x2c]
push 1
mov dword [esp + 0x60], edx
push edx
mov edx, dword [eax + 0x10]
mov dword [esp + 0x18], eax
call fcn.004b2472
mov edx, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [edx + 0x10]
call fcn.00485543
cmp eax, 1
jg 0x4b2e19
mov al, byte [edx]
cmp al, 0x38
je 0x4b2e03
cmp al, 0x36
jne 0x4b2e19
mov eax, dword [esp + 0x50]
xor edx, edx
inc edx
xor eax, edx
lea edx, [eax*2 + 0x37]
mov dword [esp + 0x30], edx
jmp 0x4b2e28
mov eax, dword [esp + 0x50]
lea eax, [eax*2 + 0x36]
mov dword [esp + 0x30], eax
call fcn.00485543
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x4b2e3f
mov edx, dword [esp + 0x2c]
mov ecx, edi
call fcn.004b18cf
cmp dword [esp + 0x50], ebx
mov ecx, dword [esi + 0x6c]
mov edx, dword [esp + 0x54]
sete al
add al, 0x26
mov dword [edi + 0x40], edx
cmp dword [esp + 0x30], 0xb8
mov byte [edi + 0x3d], al
mov dword [edi + 0x44], ecx
je 0x4b3e5e
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
push ebx
inc dword [eax + 0x2c]
mov esi, dword [eax + 0x2c]
push esi
push edx
mov edx, 0x87
call fcn.004746eb
mov edx, dword [esp + 0x3c]
add esp, 0xc
push esi
push dword [esp + 0x28]
mov esi, dword [esp + 0x3c]
mov ecx, esi
push dword [esp + 0x64]
call fcn.004746eb
add esp, 0xc
mov ecx, esi
push 0x53
pop edx
call fcn.00474c95
jmp 0x4b3e5e
test edx, 0x200
je 0x4b37d0
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x44], ebx
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x64], eax
movzx eax, ax
mov dword [esp + 0x58], eax
movzx eax, word [ecx + 0x1a]
mov dword [esp + 0x5c], eax
movzx eax, word [ecx + 0x1c]
mov ecx, ebx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], ecx
mov byte [esp + 0x23], bl
mov byte [esp + 0x4b], bl
mov eax, dword [eax + 0x20]
mov dword [esp + 0x74], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x64]
movzx eax, ax
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x2c], eax
test dl, 0x20
je 0x4b2f45
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
inc dword [esp + 0x2c]
mov eax, dword [eax + 0x38]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x40], eax
movzx eax, word [ecx + 0x1a]
mov ecx, eax
mov dword [esp + 0x14], eax
test dl, 0x10
je 0x4b301d
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov eax, dword [eax + 0x38]
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x68], eax
movzx edx, word [edx + 0x1c]
cmp ecx, edx
cmova edx, ecx
mov ecx, pe_nt_image_headers32
mov dword [esp + 0x24], edx
test word [eax + 0xa], cx
je 0x4b2fcc
mov ecx, dword [esp + 0x18]
push ebx
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [ecx + 0x2c], eax
mov ecx, esi
push eax
mov dword [edi + 0x2c], eax
xor eax, eax
inc eax
push eax
push 0x47
pop edx
call fcn.004746eb
mov eax, dword [esi + 0x6c]
add esp, 0xc
mov ecx, dword [esp + 0x74]
shl dword [edi + 0x2c], 1
mov esi, dword [esp + 0x64]
mov dword [edi + 0x30], eax
mov eax, dword [ecx + 0x1c]
xor ecx, ecx
movzx edx, si
mov esi, dword [esp + 0x34]
cmp byte [edx + eax], 1
mov edx, dword [esp + 0x24]
sete cl
xor ecx, dword [esp + 0x50]
or dword [edi + 0x2c], ecx
mov dword [esp + 0x14], edx
cmp dword [esp + 0x40], ebx
jne 0x4b301d
mov eax, dword [esp + 0x64]
movzx ecx, ax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 4]
movsx ecx, word [eax + ecx*2]
mov dword [esp + 0x24], ecx
test ecx, ecx
js 0x4b3007
mov eax, dword [esp + 0x74]
add ecx, ecx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
je 0x4b3010
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x14], edx
cmp ecx, 0xfffffffe
jne 0x4b301d
xor ecx, ecx
mov dword [esp + 0x14], edx
inc ecx
mov byte [esp + 0x23], cl
jmp 0x4b3020
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x2c]
and eax, 0x80030
cmp eax, 0x80000
jne 0x4b306e
mov dword [esp + 0x14], ecx
mov byte [esp + 0x23], cl
mov ecx, dword [esp + 0x18]
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
mov dword [esp + 0x3c], eax
mov dword [edi + 0x24], eax
cmp dword [edi], ebx
je 0x4b3064
push ebx
push eax
push ebx
push 0x47
pop edx
mov ecx, esi
call fcn.004746eb
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [edi + 0x28], eax
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x64]
cmp ax, word [edx + 0x34]
jae 0x4b30c2
movzx ecx, ax
mov eax, dword [edx + 0x1c]
xor edx, edx
cmp byte [ecx + eax], dl
sete dl
cmp dword [esp + 0x50], edx
jne 0x4b30c2
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x70]
mov dword [esp + 0x40], eax
mov al, byte [esp + 0x23]
mov byte [esp + 0x4b], al
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x68], ecx
movzx ecx, dx
movzx eax, al
mov byte [esp + 0x23], bl
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x70], eax
cmp dword [ebp + 0xc], ebx
jle 0x4b30e9
mov eax, dword [esp + 0x28]
test dword [eax + 0x2c], 0x100000
je 0x4b30e9
push ebx
push ebx
push dword [esp + 0x40]
mov edx, 0x88
mov ecx, esi
call fcn.004746eb
add esp, 0xc
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x18]
mov edx, edi
push dword [esp + 0x58]
call fcn.004b205e
add esp, 0xc
mov dword [esp + 0x6c], eax
cmp dword [esp + 0x1c], ebx
je 0x4b312d
cmp word [esp + 0x70], bx
je 0x4b312d
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
movzx edx, ax
add edx, dword [esp + 0x1c]
call fcn.00459993
mov dword [esp + 0x44], eax
cmp dword [esp + 0x3c], ebx
je 0x4b3138
mov eax, dword [edi + 0x28]
jmp 0x4b313b
mov eax, dword [edi + 0x10]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x14], eax
test ecx, ecx
je 0x4b3156
test byte [ecx + 0xc], 0x28
jne 0x4b3156
xor edx, edx
mov dword [esp + 0x2c], ebx
inc edx
jmp 0x4b315d
xor edx, edx
inc edx
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x68]
test eax, eax
je 0x4b316f
test byte [eax + 0xc], 0x28
mov dword [esp + 0x24], ebx
je 0x4b3173
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x64]
test ecx, ecx
jne 0x4b31a4
test dx, dx
jne 0x4b31a4
mov eax, dword [esp + 0x58]
movzx eax, ax
mov dword [esp + 0x30], ebx
mov dword [esp + 0x58], eax
mov al, byte [esp + 0x23]
test al, al
je 0x4b3287
mov dword [esp + 0x2c], ebx
jmp 0x4b328d
movzx eax, dx
mov dword [esp + 0x58], eax
xor eax, eax
inc eax
mov dword [esp + 0x30], eax
test ecx, ecx
je 0x4b318f
mov eax, dword [ecx]
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x5c]
movzx edx, ax
mov eax, dword [esp + 0x64]
movzx eax, ax
add eax, dword [esp + 0x6c]
push edx
mov dword [esp + 0x34], ecx
mov edx, ecx
mov ecx, dword [esp + 0x1c]
push eax
mov dword [esp + 0x84], eax
call fcn.004b2472
push dword [esp + 0x48]
mov esi, dword [esp + 0x40]
mov edx, edi
mov ecx, esi
call fcn.004b2380
mov eax, dword [esp + 0x4c]
add esp, 0xc
test byte [eax + 0xa], 0x80
jne 0x4b3229
mov ecx, dword [esp + 0x30]
call fcn.00487111
test eax, eax
je 0x4b3229
push ebx
push dword [esp + 0x18]
mov ecx, esi
push dword [esp + 0x84]
push 0x32
pop edx
call fcn.004746eb
add esp, 0xc
cmp dword [esp + 0x1c], ebx
je 0x4b324c
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x30]
movzx eax, ax
add eax, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x60]
movzx edx, ax
call fcn.004b197b
pop ecx
mov ecx, dword [esp + 0x5c]
movzx eax, cx
add dword [esp + 0x58], eax
mov ecx, dword [esp + 0x30]
call fcn.00485543
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x4b3277
mov edx, dword [esp + 0x40]
mov ecx, edi
call fcn.004b18cf
xor ecx, ecx
inc ecx
jmp 0x4b327b
mov dword [esp + 0x2c], ecx
mov al, bl
mov dword [esp + 0x30], ecx
mov byte [esp + 0x23], al
jmp 0x4b32b3
cmp dword [esp + 0x3c], ebx
je 0x4b32b3
movzx eax, dx
mov ecx, esi
add eax, dword [esp + 0x6c]
push ebx
push eax
push ebx
push 0x4b
pop edx
call fcn.004746eb
xor eax, eax
add esp, 0xc
inc eax
inc dword [esp + 0x58]
mov dword [esp + 0x30], eax
mov al, byte [esp + 0x23]
mov ecx, dword [esp + 0x58]
push dword [esp + 0x1c]
mov edx, dword [esp + 0x70]
movzx eax, al
sub ecx, eax
push ecx
mov ecx, dword [esp + 0x20]
call fcn.004b1933
mov eax, dword [esp + 0x30]
pop ecx
pop ecx
movzx eax, word [eax + 0x32]
test ax, ax
je 0x4b32e7
cmp dword [esp + 0x58], eax
je 0x4b3444
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4b3302
push ebx
push eax
xor eax, eax
mov ecx, esi
inc eax
push eax
push 0x47
pop edx
call fcn.004746eb
add esp, 0xc
cmp dword [edi + 0x34], ebx
je 0x4b3349
mov eax, dword [esp + 0x64]
mov ecx, esi
movzx eax, ax
push eax
push dword [esp + 0x70]
push dword [esp + 0x1c]
push dword [edi + 0x34]
push 0x40
pop edx
call fcn.00474a00
push dword [esp + 0xa0]
mov edx, dword [esp + 0x60]
push dword [esp + 0x8c]
mov ecx, dword [esp + 0x30]
push dword [esp + 0x2c]
push dword [ebp + 0xc]
call fcn.004b2554
add esp, 0x20
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x50]
movzx eax, byte [ecx + eax*2 + 0x426610]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x30], eax
test dword [ecx + 0x2c], 0x100000
je 0x4b33d3
cmp eax, 0x17
jne 0x4b33d3
mov eax, dword [esp + 0x74]
push 0xa
pop ecx
push ebx
mov eax, dword [eax + 8]
push ebx
movsx eax, word [eax]
add eax, 9
cdq
idiv ecx
mov ecx, esi
push eax
push 0x7c
pop edx
call fcn.004746eb
add esp, 0xc
mov dword [esp + 0x10], eax
cmp dword [esp + 0x40], ebx
jne 0x4b33a9
cmp dword [esp + 0x68], ebx
je 0x4b33cf
xor eax, eax
mov ecx, esi
lea edx, [eax + 1]
call fcn.00474c95
mov esi, dword [esi + 0x6c]
mov edx, dword [esp + 0x10]
inc esi
mov ecx, dword [esp + 0x34]
call fcn.00474f68
mov dword [esp + 0x10], ebx
mov dword [eax + 8], esi
mov esi, ecx
mov eax, dword [esp + 0x30]
push dword [esp + 0x58]
mov edx, eax
mov ecx, esi
push dword [esp + 0x70]
push dword [esp + 0x1c]
push dword [esp + 0x44]
call fcn.00474a00
mov ecx, dword [esp + 0x4c]
add esp, 0x10
test ecx, ecx
je 0x4b3448
mov eax, dword [esi + 0x6c]
mov ecx, esi
push ebx
add eax, 2
push eax
push ebx
push 9
pop edx
call fcn.004746eb
mov eax, dword [esp + 0x64]
add esp, 0xc
sub eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
push eax
push dword [esp + 0x70]
xor eax, eax
push dword [esp + 0x1c]
inc eax
cmp eax, dword [esp + 0x64]
push dword [esp + 0x44]
sbb eax, eax
and eax, 4
movzx edx, byte [eax + ecx + 0x426612]
mov ecx, esi
call fcn.00474a00
add esp, 0x10
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x64]
movzx edx, ax
mov dword [esp + 0x40], edx
cmp dword [esp + 0x68], ebx
je 0x4b352e
mov eax, dword [esp + 0x68]
mov eax, dword [eax]
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x70]
movzx edx, ax
mov eax, dword [esp + 0x64]
movzx eax, ax
add eax, dword [esp + 0x6c]
push edx
mov dword [esp + 0x30], ecx
mov edx, ecx
mov ecx, dword [esp + 0x1c]
push eax
mov dword [esp + 0x38], eax
call fcn.004b2472
push dword [esp + 0x70]
mov edx, edi
mov ecx, esi
call fcn.004b2380
mov eax, dword [esp + 0x74]
add esp, 0xc
test byte [eax + 0xa], 0x80
jne 0x4b34ca
mov ecx, dword [esp + 0x2c]
call fcn.00487111
test eax, eax
je 0x4b34ca
push ebx
push dword [esp + 0x18]
mov ecx, esi
push dword [esp + 0x38]
push 0x32
pop edx
call fcn.004746eb
add esp, 0xc
mov eax, dword [esp + 0x44]
test eax, eax
je 0x4b3500
mov ecx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x74]
movzx edx, ax
call fcn.004b197b
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x74]
pop ecx
mov ecx, dword [esp + 0x18]
push eax
movzx eax, dx
mov edx, dword [esp + 0x34]
push eax
call fcn.004b1933
pop ecx
pop ecx
mov ecx, dword [esp + 0x70]
movzx eax, cx
add dword [esp + 0x40], eax
mov ecx, dword [esp + 0x2c]
call fcn.00485543
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x4b3528
mov edx, dword [esp + 0x68]
mov ecx, edi
call fcn.004b18cf
jmp 0x4b355c
mov dword [esp + 0x24], ecx
jmp 0x4b355c
cmp byte [esp + 0x4b], bl
je 0x4b355c
test ecx, ecx
jne 0x4b3557
push ebx
movzx eax, ax
mov ecx, esi
add eax, dword [esp + 0x70]
push eax
push ebx
push 0x4b
pop edx
call fcn.004746eb
mov edx, dword [esp + 0x4c]
add esp, 0xc
mov dword [esp + 0x24], ebx
inc edx
mov dword [esp + 0x40], edx
cmp dword [esp + 0x1c], ebx
je 0x4b356f
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x60]
call fcn.00459528
mov eax, dword [esp + 0x44]
test eax, eax
je 0x4b3582
mov ecx, dword [esp + 0x60]
mov edx, eax
call fcn.00459528
mov eax, dword [esi + 0x6c]
mov dword [edi + 0x44], eax
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4b35f0
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x4b35b2
mov eax, dword [esi + 0x6c]
push ebx
add eax, 3
push eax
push ecx
push 0x11
pop edx
mov ecx, esi
call fcn.004746eb
mov eax, dword [esp + 0x4c]
add esp, 0xc
mov ecx, dword [esp + 0x50]
push eax
push dword [esp + 0x70]
mov eax, dword [esp + 0x2c]
push dword [esp + 0x1c]
push dword [esp + 0x44]
movzx edx, byte [eax + ecx*2 + 0x428a5c]
mov ecx, esi
call fcn.00474a00
mov eax, dword [esp + 0x20]
add esp, 0x10
test eax, eax
je 0x4b35f0
mov edx, eax
mov ecx, esi
call fcn.00474f68
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x4b363f
mov eax, dword [esi + 0x6c]
push ebx
add eax, 2
push eax
push ecx
push 0x10
pop edx
mov ecx, esi
call fcn.004746eb
movzx eax, byte [esp + 0x2f]
add esp, 0xc
add eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
push eax
push dword [esp + 0x70]
movzx eax, byte [esp + 0x2b]
push dword [esp + 0x1c]
push dword [esp + 0x44]
movzx edx, byte [eax + ecx*2 + 0x428a5c]
mov ecx, esi
call fcn.00474a00
add esp, 0x10
mov eax, dword [esp + 0x28]
test dword [eax + 0x2c], 0x40000
je 0x4b366d
mov ecx, dword [esp + 0x64]
movzx eax, cx
push eax
movzx eax, cx
mov ecx, esi
push eax
push dword [esp + 0x40]
push 0x7d
pop edx
call fcn.004746eb
mov eax, dword [esp + 0x34]
add esp, 0xc
test byte [eax + 0x2c], 0x40
mov eax, dword [esp + 0x4c]
je 0x4b368e
mov ecx, 0x1020
test word [eax + 0x28], cx
jne 0x4b368e
xor eax, eax
inc eax
mov dword [esp + 0x2c], eax
jmp 0x4b3760
mov edx, dword [esp + 0x74]
mov ecx, dword [edx + 0xc]
test byte [ecx + 0x1c], 0x80
jne 0x4b36b5
push dword [esp + 0x38]
mov ecx, eax
push dword [esp + 0x58]
call fcn.004b23b5
pop ecx
pop ecx
mov dword [esp + 0x2c], ebx
jmp 0x4b3760
mov eax, dword [esp + 0x54]
mov dword [esp + 0x2c], ebx
cmp eax, dword [esp + 0x38]
je 0x4b3768
call fcn.00490d43
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x10], eax
movzx edx, word [eax + 0x32]
call fcn.0048b563
mov ecx, dword [esp + 0x10]
and dword [esp + 0x7c], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], ebx
movzx eax, word [ecx + 0x32]
mov edx, eax
cmp word [esp + 0x7c], ax
jae 0x4b3740
mov dword [esp + 0x2c], ebx
mov edi, ebx
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x74]
mov dx, word [edx + edi*2]
call fcn.00490d5b
movsx ecx, ax
mov eax, dword [esp + 0x24]
add eax, edi
push eax
push ecx
push dword [esp + 0x40]
mov ecx, esi
push 0x5e
pop edx
call fcn.004746eb
mov ecx, dword [esp + 0x1c]
add esp, 0xc
inc edi
movzx edx, word [ecx + 0x32]
cmp edi, edx
jl 0x4b3700
mov edi, dword [esp + 0x80]
movzx eax, dx
mov ecx, esi
push eax
push dword [esp + 0x28]
push dword [esp + 0xa0]
push dword [esp + 0x60]
push 0x1c
pop edx
call fcn.00474a00
add esp, 0x10
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x74]
cmp dword [edi], ebx
jne 0x4b3782
mov ecx, dword [edx + 0x24]
test ecx, ecx
je 0x4b3782
push dword [esp + 0x84]
mov edx, eax
call fcn.004b24ed
pop ecx
mov ecx, dword [esp + 0x28]
mov eax, 0x1000
test dword [ecx + 0x2c], eax
je 0x4b3796
mov byte [edi + 0x3d], 0xb8
jmp 0x4b37a2
cmp dword [esp + 0x50], ebx
sete al
add al, 0x26
mov byte [edi + 0x3d], al
mov eax, dword [esp + 0x38]
xor edx, edx
mov dword [edi + 0x40], eax
inc edx
mov al, byte [ecx + 0x2e]
and al, dl
mov byte [edi + 0x3e], al
test byte [ecx + 0x2c], 0xf
jne 0x4b37bd
mov byte [edi + 0x3f], dl
cmp dword [esp + 0x2c], ebx
je 0x4b3e5e
mov dword [esp + 0x74], ebx
jmp 0x4b3e5e
test edx, 0x2000
je 0x4b3e16
mov edx, dword [esp + 0x18]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], ebx
mov eax, dword [edx + 0x28]
mov dword [esp + 0x64], eax
inc eax
inc dword [edx + 0x2c]
mov dword [edx + 0x28], eax
mov eax, dword [edx + 0x2c]
mov dword [esp + 0x38], eax
mov eax, dword [edx + 0x38]
dec eax
mov dword [esp + 0x58], ebx
mov dword [edx + 0x38], eax
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x14], ebx
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x3c], ecx
mov eax, dword [eax + 0x38]
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov eax, dword [eax + 0x18]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x38]
mov dword [edi + 0x40], eax
mov eax, dword [esp + 0x4c]
mov byte [edi + 0x3d], 0x43
mov al, byte [eax + 0x2c]
cmp al, 1
jbe 0x4b393d
movzx eax, al
sub eax, dword [ebp + 0xc]
dec eax
imul ecx, eax, 0x48
push ebx
mov dword [esp + 0x80], eax
add ecx, 0x50
push ecx
mov ecx, dword [esp + 0x68]
call fcn.004597ba
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x40], ecx
test ecx, ecx
jne 0x4b388b
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x90]
jmp 0x4b435e
mov edx, dword [esp + 0x7c]
lea edi, [ecx + 8]
mov esi, dword [esp + 0x88]
push 0x12
lea eax, [edx + 1]
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
xor eax, eax
pop ecx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x4c]
inc eax
mov ecx, dword [esi + 4]
add ecx, 8
mov dword [esp + 0x7c], ecx
cmp edx, eax
jl 0x4b38fd
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x80]
add ebx, 0x50
add eax, 0x9c
mov dword [esp + 0x10], eax
movzx eax, byte [eax]
mov edi, ebx
imul esi, eax, 0x48
add ebx, 0x48
mov eax, dword [esp + 0x10]
push 0x12
add eax, 0x60
mov dword [esp + 0x14], eax
add esi, ecx
pop ecx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x7c]
sub edx, 1
jne 0x4b38d5
xor ebx, ebx
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x80]
mov eax, dword [esp + 0x4c]
test byte [eax + 0x28], 0x10
jne 0x4b3992
test byte [ecx + 0x1c], 0x80
jne 0x4b394a
mov eax, dword [edx + 0x2c]
mov ecx, esi
inc eax
push ebx
push eax
push ebx
mov dword [edx + 0x2c], eax
push 0x4b
pop edx
mov dword [esp + 0x3c], eax
call fcn.004746eb
add esp, 0xc
jmp 0x4b3983
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 4]
mov dword [esp + 0x40], eax
jmp 0x4b3910
call fcn.00490d43
mov esi, eax
mov eax, dword [edx + 0x28]
push ebx
mov dword [esp + 0x34], eax
lea ecx, [eax + 1]
mov dword [edx + 0x28], ecx
movzx ecx, word [esi + 0x32]
push ecx
mov ecx, dword [esp + 0x3c]
push eax
push 0x76
pop edx
call fcn.004746eb
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov edx, esi
call fcn.00474f4d
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [esp + 0x2c], eax
mov dword [ecx + 0x2c], eax
push ebx
push dword [esp + 0x3c]
mov ecx, esi
push ebx
push 0x47
pop edx
call fcn.004746eb
mov dword [esp + 0x98], eax
xor ecx, ecx
mov eax, dword [esp + 0x90]
inc ecx
add esp, 0xc
cmp dword [eax + 0xc], ecx
jle 0x4b3a72
mov esi, dword [esp + 0x18]
mov edx, ebx
mov dword [esp + 0x10], edx
mov ecx, ebx
mov dword [esp + 0x5c], ebx
jmp 0x4b39d3
mov eax, edi
mov eax, dword [eax + 0x18]
add eax, ecx
mov edi, dword [eax]
mov dword [esp + 0x7c], edi
cmp eax, dword [esp + 0x28]
je 0x4b3a31
mov edi, 0x8006
test word [eax + 0xa], di
jne 0x4b3a31
mov edi, 0x3fff
test word [eax + 0xc], di
je 0x4b3a31
mov eax, dword [esp + 0x7c]
test dword [eax + 4], 0x400000
jne 0x4b3a31
mov ecx, dword [esp + 0x60]
mov edx, eax
push ebx
push ebx
call fcn.004861de
mov edx, dword [esp + 0x1c]
mov ecx, esi
push eax
call fcn.00485d73
mov ecx, dword [esp + 0x68]
add esp, 0xc
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
jmp 0x4b3a35
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x84]
inc edx
add ecx, 0x30
mov dword [esp + 0x10], edx
mov dword [esp + 0x5c], ecx
cmp edx, dword [edi + 0xc]
jl 0x4b39d1
mov edi, dword [esp + 0x80]
mov esi, dword [esp + 0x34]
test eax, eax
je 0x4b3a72
mov ecx, dword [esp + 0x18]
mov edx, 0x1002c
push eax
push ebx
call fcn.00485bff
pop ecx
pop ecx
mov dword [esp + 0x14], eax
xor eax, eax
push 0x43282c
inc eax
push eax
push dword [esp + 0x20]
call fcn.00474928
mov edx, dword [esp + 0x30]
add esp, 0xc
mov ecx, ebx
mov dword [esp + 0x1c], ebx
cmp dword [edx + 0xc], ebx
jle 0x4b3d89
mov edi, dword [esp + 0x18]
imul eax, ecx, 0x30
add eax, dword [edx + 0x18]
mov edx, dword [esp + 0x54]
cmp dword [eax + 0x14], edx
je 0x4b3abc
mov edx, 0x400
test word [eax + 0xc], dx
je 0x4b3d6e
mov edx, dword [eax]
mov dword [esp + 0x6c], ebx
test edx, edx
je 0x4b3add
mov ecx, dword [esp + 0x60]
push ebx
push ebx
call fcn.004861de
pop ecx
pop ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
jmp 0x4b3ae3
mov eax, ebx
mov dword [esp + 0x10], ebx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x94], eax
cmp byte [edx + 0x57], 0
je 0x4b3b01
test eax, eax
je 0x4b3d6e
jmp 0x4b3d5f
mov edx, dword [esp + 0x14]
test edx, edx
je 0x4b3b10
mov dword [edx + 0xc], eax
mov dword [esp + 0x10], edx
lea eax, [ecx + 1]
push eax
xor eax, eax
push 0x43283c
inc eax
push eax
push edi
call fcn.00474928
push dword [esp + 0x74]
mov edx, dword [esp + 0x54]
mov ecx, edi
push 0x20
push ebx
push ebx
push ebx
push dword [esp + 0x34]
call fcn.004bba53
add esp, 0x28
mov dword [esp + 0x68], eax
test eax, eax
je 0x4b3d54
mov edx, dword [esp + 0x40]
lea ecx, [eax + 0x2f8]
push ebx
push ecx
mov ecx, edi
call fcn.004b14a0
mov eax, dword [esp + 0x54]
pop ecx
pop ecx
test byte [eax + 0x28], 0x10
jne 0x4b3cae
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
push 0xffffffffffffffff
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
pop eax
cmove ecx, eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x10], ecx
test byte [eax + 0x1c], 0x80
jne 0x4b3bca
push ebx
push dword [esp + 0x30]
mov edx, 0x87
mov ecx, esi
push dword [esp + 0x5c]
call fcn.004746eb
add esp, 0xc
mov ecx, esi
push dword [esp + 0x10]
push dword [esp + 0x30]
push ebx
push dword [esp + 0x3c]
push 0x2f
pop edx
call fcn.00474a00
add esp, 0x10
mov dword [esp + 0x6c], eax
jmp 0x4b3cae
mov ecx, eax
call fcn.00490d43
mov ecx, edi
mov dword [esp + 0x9c], eax
movzx edx, word [eax + 0x32]
mov dword [esp + 0x5c], edx
call fcn.0048b563
mov dword [esp + 0x70], eax
mov dword [esp + 0x7c], ebx
test edx, edx
je 0x4b3c2d
mov edi, edx
mov edx, dword [esp + 0x3c]
lea ecx, [ebx + eax]
mov eax, dword [esp + 0x9c]
push ecx
mov ecx, esi
mov eax, dword [eax + 4]
movsx eax, word [eax + ebx*2]
push eax
push dword [esp + 0x5c]
call fcn.004886d1
mov eax, dword [esp + 0x7c]
add esp, 0xc
inc ebx
cmp ebx, edi
jl 0x4b3bf5
mov edi, dword [esp + 0x18]
xor ebx, ebx
mov edx, dword [esp + 0x5c]
cmp dword [esp + 0x10], 0
je 0x4b3c53
push edx
push eax
push ebx
push dword [esp + 0x3c]
mov ecx, esi
push 0x1d
pop edx
call fcn.00474a00
add esp, 0x10
mov dword [esp + 0x6c], eax
cmp dword [esp + 0x10], 0
jl 0x4b3c9c
push dword [esp + 0x2c]
mov ecx, esi
push dword [esp + 0x60]
push dword [esp + 0x78]
push 0x61
pop edx
call fcn.004746eb
add esp, 0xc
mov edx, 0x8a
mov ecx, esi
push dword [esp + 0x5c]
push dword [esp + 0x74]
push dword [esp + 0x34]
push dword [esp + 0x3c]
call fcn.00474a00
add esp, 0x10
cmp dword [esp + 0x10], 0
je 0x4b3c9c
push 0x10
pop edx
mov ecx, esi
call fcn.00474c95
push dword [esp + 0x5c]
mov edx, dword [esp + 0x74]
mov ecx, edi
call fcn.0048b599
add esp, 4
push ebx
push dword [esp + 0x54]
mov ecx, esi
push dword [esp + 0x40]
push 0xa
pop edx
call fcn.004746eb
mov eax, dword [esp + 0x78]
add esp, 0xc
test eax, eax
je 0x4b3cdb
mov edx, eax
mov ecx, esi
call fcn.00474f68
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x58]
push 1
pop edx
test byte [eax + 0x30], 2
cmovne ecx, edx
mov dword [esp + 0x58], ecx
mov ecx, dword [eax + 0x348]
test dword [ecx + 0x2c], 0x200
je 0x4b3d33
cmp dword [esp + 0x1c], 0
je 0x4b3d10
mov edx, dword [esp + 0x44]
cmp dword [ecx + 0x20], edx
jne 0x4b3d33
mov edx, dword [esp + 0x3c]
test byte [edx + 0x1c], 0x80
je 0x4b3d2a
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
mov eax, dword [esp + 0x68]
je 0x4b3d33
mov ecx, dword [ecx + 0x20]
mov dword [esp + 0x44], ecx
jmp 0x4b3d37
mov dword [esp + 0x44], ebx
xor edx, edx
inc edx
test byte [eax + 0x30], dl
je 0x4b3d46
mov ecx, dword [esp + 0x4c]
or dword [ecx + 0x30], edx
mov ecx, eax
call fcn.004bc4c8
mov ecx, edi
call fcn.0047497e
mov eax, dword [esp + 0x94]
test eax, eax
je 0x4b3d6a
mov ecx, dword [esp + 0x60]
mov edx, eax
call fcn.0048602a
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x1c], ecx
mov edx, eax
cmp ecx, dword [eax + 0xc]
jl 0x4b3a9e
mov edi, dword [esp + 0x80]
mov ecx, dword [esp + 0x18]
call fcn.0047497e
mov eax, dword [esp + 0x44]
mov dword [edi + 0x48], eax
test eax, eax
je 0x4b3da4
mov eax, dword [esp + 0x64]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4b3dba
mov ecx, dword [esp + 0x60]
mov edx, eax
mov dword [eax + 0xc], ebx
call fcn.0048602a
mov edx, dword [esp + 0x8c]
mov ecx, esi
call fcn.00474f68
mov ecx, dword [esi + 0x6c]
mov dword [eax + 4], ecx
mov ecx, esi
mov edx, dword [edi + 0xc]
call fcn.00474744
mov edx, dword [esp + 0x50]
mov ecx, esi
call fcn.00474ac0
mov eax, dword [esi + 0x6c]
xor ecx, ecx
mov dword [edi + 0x44], eax
inc ecx
mov eax, dword [esp + 0x4c]
cmp byte [eax + 0x2c], cl
jbe 0x4b3e02
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x60]
call fcn.004594d9
cmp dword [esp + 0x58], 0
jne 0x4b3e5e
mov edx, dword [esp + 0x28]
mov ecx, edi
call fcn.004b18cf
jmp 0x4b3e5e
mov eax, dword [esp + 0x88]
test byte [eax + 0x28], 0x40
je 0x4b3e29
mov byte [edi + 0x3d], 0xb8
jmp 0x4b3e5e
mov ecx, dword [esp + 0x50]
push ebx
push dword [esp + 0x20]
mov al, byte [ecx + 0x427830]
movzx edx, byte [ecx + 0x423f44]
mov ecx, esi
mov byte [edi + 0x3d], al
mov eax, dword [esp + 0x5c]
push eax
mov dword [edi + 0x40], eax
call fcn.004746eb
add esp, 0xc
inc eax
mov dword [edi + 0x44], eax
xor eax, eax
inc eax
mov byte [edi + 0x3f], al
xor eax, eax
cmp dword [esp + 0x74], eax
sete al
inc eax
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x84]
mov eax, ebx
mov dword [esp + 0x3c], eax
mov edx, dword [ecx + 0x18]
mov ecx, dword [ecx + 0xc]
jmp 0x4b3fc1
test byte [edx + 0xa], 6
mov dword [esp + 0x24], ebx
jne 0x4b3fbd
mov ecx, dword [edi + 0x58]
mov eax, dword [edx + 0x2c]
and ecx, dword [edx + 0x28]
and eax, dword [edi + 0x5c]
or ecx, eax
je 0x4b3eaf
mov eax, dword [esp + 0x4c]
or dword [eax + 0x30], 2
jmp 0x4b3fb5
mov eax, dword [esp + 0x88]
mov ecx, dword [edx]
mov dword [esp + 0x10], ecx
mov al, byte [eax + 0x24]
test al, 0x58
je 0x4b3f05
test byte [ecx + 4], 3
je 0x4b3fb5
test al, 8
je 0x4b3edd
xor eax, eax
inc eax
test byte [ecx + 4], al
je 0x4b3fb5
mov edx, dword [ecx + 0x24]
mov ecx, dword [esp + 0x4c]
lea ecx, [ecx + 0x1f0]
call fcn.004b6890
and edx, dword [edi + 0x5c]
and eax, dword [edi + 0x58]
or eax, edx
mov edx, dword [esp + 0x1c]
jne 0x4b3fb5
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x44]
cmp eax, 1
jne 0x4b3f2f
push dword [esp + 0x74]
mov edx, dword [edi + 4]
call fcn.0048ae14
mov edx, dword [esp + 0x20]
pop ecx
test eax, eax
jne 0x4b3f34
push 2
pop eax
mov dword [esp + 0x3c], eax
jmp 0x4b3fb9
cmp eax, 3
jge 0x4b3f4b
mov eax, 0x1000
test word [edx + 0xa], ax
je 0x4b3f4b
mov eax, dword [esp + 0x3c]
test eax, eax
jne 0x4b3fb9
push 3
jmp 0x4b3f25
mov eax, 0x200
test word [edx + 0xa], ax
je 0x4b3f7a
mov edx, dword [edi + 0x2c]
test edx, edx
je 0x4b3f7a
mov eax, edx
mov ecx, esi
push ebx
shr eax, 1
push ebx
push eax
xor eax, eax
inc eax
and edx, eax
or edx, 0x10
call fcn.004746eb
add esp, 0xc
mov dword [esp + 0x24], eax
push 0x10
push dword [esp + 0x9c]
push dword [esp + 0x18]
push dword [esp + 0x24]
call fcn.0048a31b
mov eax, dword [esp + 0x34]
add esp, 0x10
test eax, eax
je 0x4b3faa
mov edx, eax
mov ecx, esi
call fcn.00474f68
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x1c]
push 4
pop eax
or word [edx + 0xa], ax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
dec ecx
add edx, 0x30
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], edx
test ecx, ecx
jg 0x4b3e84
mov dword [esp + 0x44], eax
test eax, eax
jg 0x4b3e6c
mov eax, dword [esp + 0x84]
mov esi, dword [eax + 0x18]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x24], esi
mov dword [esp + 0x10], eax
test eax, eax
jle 0x4b410d
mov edi, eax
test byte [esi + 0xa], 6
jne 0x4b40f2
movzx eax, word [esi + 0xc]
test al, 0x82
push 0xb
setne cl
pop edx
bt ax, dx
setb al
test al, cl
je 0x4b40f2
mov ecx, dword [esp + 0x54]
cmp dword [esi + 0x14], ecx
jne 0x4b40f2
mov eax, dword [esp + 0x88]
test byte [eax + 0x24], 0x58
jne 0x4b40f2
mov eax, dword [esi]
mov edx, ecx
mov ecx, dword [esp + 0x84]
push ebx
push 0x83
push dword [esp + 0x98]
mov dword [esp + 0x98], eax
push dword [esp + 0x84]
push dword [esi + 0x18]
call fcn.004b6be7
mov edx, eax
add esp, 0x14
mov dword [esp + 0x94], edx
test edx, edx
je 0x4b40f2
test byte [edx + 0xa], 4
jne 0x4b40f2
xor ecx, ecx
inc ecx
test byte [edx + 0xc], cl
je 0x4b40a0
mov eax, dword [edx]
test dword [eax + 4], 0x1000
je 0x4b40a0
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], ecx
jg 0x4b40f2
mov esi, dword [edx]
lea edi, [esp + 0xa0]
mov eax, dword [esp + 0x8c]
push 0xd
pop ecx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 0xc]
push 0x10
push dword [esp + 0x9c]
mov dword [esp + 0xb4], eax
lea eax, [esp + 0xa8]
push eax
push dword [esp + 0x24]
call fcn.0048a31b
mov eax, dword [esp + 0xa4]
add esp, 0x10
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x10]
push 4
pop ecx
or word [eax + 0xa], cx
dec edi
add esi, 0x30
mov dword [esp + 0x10], edi
mov dword [esp + 0x24], esi
test edi, edi
jg 0x4b3ffc
mov edi, dword [esp + 0x80]
mov eax, dword [edi + 0x38]
mov dword [esp + 0x10], eax
test eax, eax
je 0x4b4291
movzx eax, byte [edi + 0x3c]
imul ecx, eax, 0x48
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 4]
mov eax, dword [ecx + eax + 0x18]
mov dword [esp + 0x94], eax
test byte [eax + 0x1c], 0x80
jne 0x4b4174
mov ecx, dword [esp + 0x18]
push 2
pop edx
call fcn.0048b563
push ebx
mov edx, 0x87
mov dword [esp + 0x7c], eax
lea ecx, [eax + 1]
push ecx
push dword [edi + 4]
mov ecx, dword [esp + 0x40]
call fcn.004746eb
mov edi, dword [esp + 0x84]
xor eax, eax
add esp, 0xc
inc eax
mov dword [esp + 0x1c], eax
jmp 0x4b41e3
mov ecx, eax
call fcn.00490d43
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x8c], eax
movzx esi, word [eax + 0x32]
mov dword [esp + 0x1c], esi
lea edx, [esi + 1]
call fcn.0048b563
mov edi, eax
mov ecx, ebx
mov dword [esp + 0x78], edi
mov dword [esp + 0x24], ecx
test esi, esi
je 0x4b41e3
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0x94]
lea eax, [edi + 1]
add eax, ecx
push eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 4]
movsx eax, word [eax + ecx*2]
mov ecx, ebx
push eax
push dword [esp + 0x5c]
call fcn.004886d1
mov ecx, dword [esp + 0x30]
add esp, 0xc
inc ecx
mov dword [esp + 0x24], ecx
cmp ecx, esi
jl 0x4b41aa
xor ebx, ebx
push dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
lea esi, [edi + 1]
mov ecx, dword [esp + 0x38]
push esi
push ebx
push dword [eax]
push 0x1d
pop edx
call fcn.00474a00
push dword [esp + 0x88]
mov ecx, dword [esp + 0x48]
mov edi, eax
push dword [esp + 0x30]
push esi
push 0x61
pop edx
call fcn.004746eb
mov eax, dword [esp + 0x2c]
add esp, 0x1c
mov ecx, dword [esp + 0x34]
mov edx, 0x8a
push dword [esp + 0x1c]
push esi
push dword [esp + 0x80]
push dword [eax]
call fcn.00474a00
push dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov edx, 0xb4
push esi
mov esi, dword [esp + 0x4c]
mov ecx, esi
push ebx
push dword [eax + 4]
call fcn.00474a00
push 0x10
pop edx
mov ecx, esi
call fcn.00474c95
mov edx, edi
call fcn.00474f68
mov ecx, dword [esi + 0x6c]
mov edx, dword [esp + 0x98]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
inc eax
push eax
call fcn.0048b599
mov edi, dword [esp + 0xa4]
add esp, 0x24
jmp 0x4b4295
mov esi, dword [esp + 0x34]
cmp dword [edi], 0
je 0x4b42b9
mov eax, dword [esi + 0x6c]
mov ecx, esi
push ebx
push dword [edi]
mov dword [edi + 0x1c], eax
xor eax, eax
inc eax
push eax
push 0x47
pop edx
call fcn.004746eb
add esp, 0xc
cmp dword [edi + 0x38], ebx
je 0x4b42f3
mov eax, dword [edi + 0x38]
mov dword [esp + 0x8c], eax
test eax, eax
je 0x4b4358
push ebx
push dword [eax + 8]
mov ecx, esi
push ebx
push 0x4a
pop edx
call fcn.004746eb
mov ecx, dword [esp + 0x98]
add esp, 0xc
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 0x6c]
mov dword [ecx + 0xc], eax
inc byte [edx + 0x1a]
jmp 0x4b42f7
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x84]
mov esi, dword [eax + 0x18]
cmp dword [eax + 0x14], ebx
jle 0x4b4358
test byte [esi + 0xa], 6
jne 0x4b4344
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edi + 0x58]
and eax, dword [edi + 0x5c]
or ecx, eax
jne 0x4b4344
mov eax, dword [esp + 0x88]
test byte [eax + 0x24], 0x40
jne 0x4b4344
push 0x10
push dword [esp + 0x9c]
push dword [esi]
push edx
call fcn.0048a31b
add esp, 0x10
push 4
pop eax
or word [esi + 0xa], ax
mov edx, dword [esp + 0x84]
inc ebx
add esi, 0x30
cmp ebx, dword [edx + 0x14]
mov edx, dword [esp + 0x18]
jl 0x4b4306
mov eax, dword [edi + 0x58]
mov edx, dword [edi + 0x5c]
mov ecx, dword [esp + 0xd4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004caec8
mov esp, ebp
pop ebp
ret