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

Disassembly:
sub esp, 0x90
push ebx
push ebp
push esi
mov esi, ecx
mov dl, 1
push edi
mov eax, dword [esi + 4]
mov dword [esp + 0x28], esi
mov ecx, dword [eax + 0x10]
xor eax, eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x1c], eax
movsx ecx, byte [esi + 0x138e]
shl dl, cl
mov ecx, dword [esi + 0x53]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov eax, dword [ecx]
mov byte [esp + 0x5c], dl
call dword [eax + 0x1cc]
mov ecx, dword [esi + 0x53]
mov edi, eax
mov dword [esp + 0x30], edi
mov edx, dword [ecx]
call dword [edx + 0x1d0]
mov ebx, eax
cmp ebx, edi
mov dword [esp + 0x4c], ebx
jle 0x46c5d4
sub eax, edi
lea edi, [edi + edi*4]
cdq
sub eax, edx
mov dword [esp + 0x3c], 0x14
sar eax, 1
lea eax, [eax + eax*4]
lea eax, [eax + eax*8]
shl eax, 1
cdq
idiv ebx
mov ebp, eax
lea eax, [edi + edi*8]
shl eax, 1
cdq
idiv ebx
add ebp, 0x14
mov dword [esp + 0x54], ebp
mov ecx, eax
mov eax, 0x6e
add ecx, ebp
jmp 0x46c60b
mov eax, edi
mov ebp, 0x14
sub eax, ebx
lea ebx, [ebx + ebx*4]
cdq
sub eax, edx
mov dword [esp + 0x54], ebp
sar eax, 1
mov ecx, 0x6e
lea eax, [eax + eax*4]
lea eax, [eax + eax*8]
shl eax, 1
cdq
idiv edi
add eax, ebp
mov dword [esp + 0x3c], eax
lea eax, [ebx + ebx*8]
shl eax, 1
cdq
idiv edi
add eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x3c]
sub ecx, ebp
sub eax, edi
mov dword [esp + 0x48], ecx
mov dword [esp + 0x58], eax
mov eax, dword [esi + 4]
mov ecx, dword [eax + 4]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx]
call dword [edx + 0xd0]
lea ecx, [eax + 0xd74]
lea edx, [esp + 0x90]
push ecx
push edx
lea ecx, [eax + 0xd68]
call fcn.0045f266
mov bl, byte [esi + 0x138e]
mov edi, dword [esp + 0x5c]
cmp bl, 0xff
je 0x46c6d1
mov eax, 0x40
mov ecx, edi
cdq
and ecx, 0xff
idiv ecx
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
mov ebp, edx
sar ebp, 0xc
sar ecx, 0xc
sub ebp, eax
sub ecx, eax
mov al, 0xc
mov dword [esp + 0x44], ecx
sub al, bl
mov dword [esp + 0x78], ebp
mov byte [esp + 0x50], al
mov eax, edx
cdq
mov ecx, dword [esp + 0x50]
xor eax, edx
sub eax, edx
and ecx, 0xff
and eax, 0xfff
xor eax, edx
sub eax, edx
sar eax, cl
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x94]
cdq
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
sar eax, cl
mov dword [esp + 0x40], eax
jmp 0x46c6d5
mov ebp, dword [esp + 0x78]
mov ax, word [esi + 8]
mov dword [esp + 0x6c], eax
and eax, 0xffff
mov ecx, dword [eax*4 + 0x6ccb20]
mov dword [esp + 0x68], ecx
call fcn.00511783
mov eax, dword [eax]
push 0xff
mov dword [esp + 0x94], eax
mov ecx, dword [esp + 0x96]
and eax, 0xffff
and ecx, 0xffff
shl eax, 0xc
shl ecx, 0xc
push 0x96
add eax, 0x800
add ecx, 0x800
push 0x96
push 0x77b9f8
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], 0
mov byte [esp + 0x22], 0x96
mov byte [esp + 0x21], 0x96
mov byte [esp + 0x20], 0xff
mov byte [esp + 0x23], 0xff
call fcn.005f9fc9
mov bl, al
mov al, byte [esi + 0x138e]
add esp, 0x10
cmp al, 0xff
je 0x46c811
mov eax, dword [esp + 0x50]
sub esp, 8
and eax, 0xff
mov edx, esp
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x18]
mov dword [edx], eax
mov ecx, edi
and ecx, 0xff
mov eax, dword [esp + 0x28]
mov byte [edx + 4], bl
mov edx, dword [0x6d0f44]
and edx, 0xff
mov dword [esp + 0x68], ecx
imul edx, ecx
push edx
mov edx, eax
sar edx, 0xc
sub edx, dword [esp + 0x50]
imul edx, ecx
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x38]
cdq
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
mov ecx, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x28]
sub ecx, edx
push ecx
mov ecx, eax
sar ecx, 0xc
sub ecx, ebp
imul ecx, dword [esp + 0x70]
cdq
xor eax, edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x3c]
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x28]
sar eax, cl
add edx, eax
mov eax, dword [esp + 0x44]
sub edx, eax
push edx
jmp 0x46c862
mov ecx, dword [esp + 0x10]
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esp + 0x44]
mov byte [eax + 4], bl
mov eax, dword [0x6d0f44]
and eax, 0xff
imul eax, dword [esp + 0x50]
cdq
idiv dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x64]
cdq
idiv dword [esp + 0x58]
add eax, ecx
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
add eax, dword [esp + 0x64]
push eax
call fcn.005f6e27
mov al, byte [esi + 0x138e]
add esp, 0x14
cmp al, 0xff
je 0x46caa6
mov eax, dword [esp + 0x68]
xor edx, edx
mov dx, word [eax + 0xc]
mov ecx, dword [edx*4 + 0x6ccb20]
test ecx, ecx
mov dword [esp + 0x18], ecx
je 0x46caa6
test byte [ecx + 0x10c], 0x20
jne 0x46ca8d
mov edx, dword [ecx + 0xf7]
mov eax, dword [edx + 0x88]
test ah, 8
je 0x46ca8d
lea eax, [ecx + 0x1a]
mov byte [esp + 0x12], 0xff
mov edx, eax
mov byte [esp + 0x11], 0xff
mov byte [esp + 0x10], 0xff
mov byte [esp + 0x13], 0
mov eax, dword [edx]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x20], eax
mov edx, dword [edx + 8]
mov dword [esp + 0x24], edx
mov cx, word [ecx + 0x113]
test cx, cx
je 0x46ca09
and ecx, 0xffff
sub esp, 8
mov esi, edi
mov edi, dword [esp + 0x18]
mov eax, dword [ecx*4 + 0x6ccb20]
mov edx, esp
mov ecx, dword [esp + 0x58]
and esi, 0xff
mov eax, dword [eax + 0x27]
mov dword [edx], edi
mov dword [esp + 0x78], eax
and eax, 0xffff
shl eax, 0xc
add eax, 0x800
mov byte [edx + 4], bl
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x7a]
and eax, 0xffff
mov edx, dword [esp + 0x4c]
shl eax, 0xc
add eax, 0x800
and ecx, 0xff
mov edi, eax
sar edi, 0xc
sub edi, edx
cdq
imul edi, esi
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x48]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x88]
sub edi, edx
push edi
mov edi, eax
cdq
sar edi, 0xc
xor eax, edx
sub edi, ebp
sub eax, edx
imul edi, esi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x40]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x2c]
sub edi, edx
mov edx, dword [esp + 0x50]
push edi
mov edi, eax
sar edi, 0xc
sub edi, edx
cdq
imul edi, esi
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x50]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x2c]
sub edi, edx
push edi
mov edi, eax
cdq
xor eax, edx
sub eax, edx
sar edi, 0xc
and eax, 0xfff
sub edi, ebp
xor eax, edx
imul edi, esi
sub eax, edx
mov edx, dword [esp + 0x48]
sar eax, cl
add edi, eax
sub edi, edx
push edi
call fcn.005f6c74
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x74]
add esp, 0x18
jmp 0x46ca8d
sub esp, 8
mov esi, edi
mov edi, dword [esp + 0x18]
mov edx, esp
mov ecx, dword [esp + 0x58]
and esi, 0xff
mov dword [edx], edi
mov edi, eax
sar edi, 0xc
mov byte [edx + 4], bl
mov edx, dword [esp + 0x4c]
sub edi, edx
and ecx, 0xff
cdq
imul edi, esi
xor eax, edx
push 1
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x28]
sub edi, edx
push edi
mov edi, eax
cdq
sar edi, 0xc
xor eax, edx
sub edi, ebp
sub eax, edx
imul edi, esi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar eax, cl
add edi, eax
sub edi, edx
push edi
call fcn.005f6e99
mov edi, dword [esp + 0x70]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
add esp, 0x14
xor eax, eax
mov ax, word [ecx + 0x10]
mov ecx, dword [eax*4 + 0x6ccb20]
test ecx, ecx
mov dword [esp + 0x18], ecx
jne 0x46c895
mov ecx, dword [esp + 0x68]
xor edx, edx
mov dx, word [ecx + 0x36]
mov eax, dword [edx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x18], eax
je 0x46cd3e
cmp byte [eax + 0x18], 9
jne 0x46cd21
mov ecx, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov eax, dword [0x6d0f54]
xor esi, esi
mov si, word [ecx + 0x49]
xor edx, edx
mov dx, word [ecx + 0x4b]
xor ebp, ebp
mov bp, word [ecx + 0x4d]
xor edi, edi
mov di, word [ecx + 0x4f]
and eax, 0xff
sub esi, eax
add edx, eax
sub ebp, eax
add edi, eax
cmp esi, 1
mov dword [esp + 0x38], edx
mov ecx, esi
jg 0x46cb29
mov ecx, 1
mov eax, dword [esp + 0x30]
dec eax
cmp ecx, eax
jge 0x46cb3e
cmp esi, 1
jg 0x46cb40
mov esi, 1
jmp 0x46cb40
mov esi, eax
cmp edx, 1
mov ecx, edx
jg 0x46cb4c
mov ecx, 1
cmp ecx, eax
jge 0x46cb5f
cmp edx, 1
jg 0x46cb63
mov dword [esp + 0x38], 1
jmp 0x46cb63
mov dword [esp + 0x38], eax
cmp ebp, 1
mov ecx, ebp
jg 0x46cb6f
mov ecx, 1
mov edx, dword [esp + 0x4c]
lea eax, [edx - 1]
cmp ecx, eax
jge 0x46cb86
cmp ebp, 1
jg 0x46cb88
mov ebp, 1
jmp 0x46cb88
mov ebp, eax
cmp edi, 1
mov ecx, edi
jg 0x46cb94
mov ecx, 1
cmp ecx, eax
jge 0x46cba4
cmp edi, 1
jg 0x46cba6
mov edi, 1
jmp 0x46cba6
mov edi, eax
push 0xff
push 0x96
push 0x96
push 0x77b9f8
mov byte [esp + 0x22], 0x96
mov byte [esp + 0x21], 0x96
mov byte [esp + 0x20], 0xff
mov byte [esp + 0x23], 0xff
call fcn.005f9fc9
mov bl, al
mov eax, dword [esp + 0x38]
add esp, 0x10
cmp byte [eax + 0x138e], 0xff
je 0x46cc96
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x50]
and eax, 0xff
and ecx, 0xff
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x1c]
cdq
xor eax, edx
mov dword [esp + 0x2c], ecx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x34]
sar eax, cl
mov ecx, dword [esp + 0x78]
sub esi, ecx
mov ecx, dword [esp + 0x60]
imul esi, ecx
sub esi, edx
mov edx, dword [esp + 0x38]
add esi, eax
mov dword [esp + 0x80], esi
mov esi, dword [esp + 0x78]
sub edx, esi
mov esi, dword [esp + 0x34]
imul edx, ecx
sub edx, esi
mov ecx, dword [esp + 0x2c]
add edx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x88], edx
mov esi, dword [esp + 0x40]
cdq
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar eax, cl
mov ecx, dword [esp + 0x60]
sub ebp, edx
sub edi, edx
imul ebp, ecx
imul edi, ecx
sub ebp, esi
sub edi, esi
add ebp, eax
add edi, eax
mov dword [esp + 0x84], ebp
mov dword [esp + 0x8c], edi
jmp 0x46ccf4
mov ecx, dword [esp + 0x48]
mov eax, esi
imul eax, ecx
cdq
idiv dword [esp + 0x30]
mov esi, dword [esp + 0x54]
add eax, esi
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x38]
imul eax, ecx
cdq
idiv dword [esp + 0x30]
mov ecx, dword [esp + 0x58]
add eax, esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x88], eax
mov eax, ebp
imul eax, ecx
mov ebp, dword [esp + 0x4c]
cdq
idiv ebp
add eax, esi
mov dword [esp + 0x84], eax
mov eax, edi
imul eax, ecx
cdq
idiv ebp
add eax, esi
mov dword [esp + 0x8c], eax
mov edx, dword [esp + 0x10]
sub esp, 8
mov ecx, esp
lea eax, [esp + 0x88]
push eax
mov dword [ecx], edx
mov byte [ecx + 4], bl
call fcn.005f6c3e
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x84]
mov esi, dword [esp + 0x34]
add esp, 0xc
xor ecx, ecx
mov cx, word [eax + 8]
mov eax, dword [ecx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x46cac3
mov ecx, dword [esp + 0x68]
xor eax, eax
xor edx, edx
mov ax, word [ecx + 6]
mov dl, byte [ecx + 0x10fc]
mov dword [esp + 0x60], edx
mov edi, dword [eax*4 + 0x6ccb20]
test edi, edi
mov dword [esp + 0x2c], edi
je 0x46cf3f
lea ecx, [edi + 0x1a]
mov edx, dword [edi + 0x1a]
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 4]
mov dword [esp + 0x20], eax
mov ecx, dword [ecx + 8]
mov dword [esp + 0x24], ecx
mov dx, word [edi + 4]
push edx
mov ecx, esi
call fcn.0045dbb2
test eax, eax
jne 0x46cf22
test byte [esp + 0x64], 1
je 0x46cdbe
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x60]
mov ecx, dword [eax + 0x138a]
mov eax, dword [ecx + edx*4 + 0x44]
mov dword [esp + 0x70], eax
mov byte [esp + 0x12], al
mov al, byte [esp + 0x72]
mov byte [esp + 0x11], ah
mov byte [esp + 0x10], al
jmp 0x46cdcd
mov byte [esp + 0x12], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x10], 0
mov ecx, dword [esp + 0x28]
mov byte [esp + 0x13], 0
cmp byte [ecx + 0x138e], 0xff
je 0x46de4b
mov eax, dword [esp + 0x10]
sub esp, 8
mov esi, dword [esp + 0x64]
mov edx, esp
and esi, 0xff
mov edi, dword [esp + 0x58]
mov dword [edx], eax
mov eax, dword [esp + 0x28]
mov ecx, eax
and edi, 0xff
mov byte [edx + 4], bl
mov edx, dword [esp + 0x4c]
sar ecx, 0xc
sub ecx, edx
push 1
imul ecx, esi
cdq
xor eax, edx
mov dword [esp + 0x24], ecx
sub eax, edx
mov ecx, edi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
mov ecx, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x28]
sub ecx, edx
push ecx
mov ecx, eax
sar ecx, 0xc
sub ecx, ebp
imul ecx, esi
cdq
xor eax, edx
mov dword [esp + 0x28], ecx
sub eax, edx
mov ecx, edi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x28]
sar eax, cl
mov ecx, dword [esp + 0x44]
add edx, eax
sub edx, ecx
push edx
call fcn.005f6e99
mov eax, dword [esp + 0x40]
add esp, 0x14
test byte [eax + 0x3e6], 0x80
je 0x46cf1e
mov eax, dword [esp + 0x64]
sub esp, 8
mov byte [esp + 0x1a], 0xff
mov byte [esp + 0x19], 0xff
mov byte [esp + 0x18], 0xff
mov byte [esp + 0x1b], 0
mov edx, dword [esp + 0x18]
mov ecx, esp
and eax, 7
mov dword [ecx], edx
mov edx, dword [esp + 0x4c]
push eax
mov eax, dword [esp + 0x2c]
mov byte [ecx + 4], bl
mov ecx, eax
sar ecx, 0xc
sub ecx, edx
imul ecx, esi
cdq
xor eax, edx
mov dword [esp + 0x24], ecx
sub eax, edx
mov ecx, edi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
mov ecx, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x28]
sub ecx, edx
push ecx
mov ecx, eax
sar ecx, 0xc
sub ecx, ebp
imul ecx, esi
cdq
xor eax, edx
mov dword [esp + 0x28], ecx
sub eax, edx
mov esi, dword [esp + 0x44]
and eax, 0xfff
mov ecx, edi
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x28]
sar eax, cl
add edx, eax
sub edx, esi
push edx
call fcn.005f6e27
add esp, 0x14
mov edi, dword [esp + 0x2c]
xor edx, edx
mov esi, dword [esp + 0x28]
mov dx, word [edi + 0x10]
mov edi, dword [edx*4 + 0x6ccb20]
test edi, edi
mov dword [esp + 0x2c], edi
jne 0x46cd63
mov ecx, dword [esi + 0x53]
mov eax, dword [ecx]
call dword [eax + 0x10]
xor ecx, ecx
mov cx, word [eax]
mov eax, dword [ecx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x38], eax
je 0x46d14e
jmp 0x46cf65
mov eax, dword [esp + 0x38]
mov dx, word [eax + 4]
cmp dx, word [esp + 0x6c]
je 0x46d131
mov eax, dword [esp + 0x38]
xor edx, edx
xor ecx, ecx
mov dx, word [eax + 6]
mov cl, byte [eax + 0x10fc]
mov dword [esp + 0x60], ecx
mov edi, dword [edx*4 + 0x6ccb20]
test edi, edi
mov dword [esp + 0x2c], edi
je 0x46d135
lea eax, [edi + 0x1a]
mov ecx, dword [edi + 0x1a]
mov dword [esp + 0x1c], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x20], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x24], eax
mov cx, word [edi + 4]
push ecx
mov ecx, esi
call fcn.0045dbb2
test eax, eax
jne 0x46d118
mov ecx, dword [esi + 0x53]
lea eax, [esp + 0x1c]
push eax
mov edx, dword [ecx]
call dword [edx + 0x1d4]
test byte [eax + 9], 0x20
je 0x46d118
test byte [esp + 0x64], 1
je 0x46d029
mov ecx, dword [esi + 0x138a]
mov edx, dword [esp + 0x60]
mov byte [esp + 0x13], 0xff
mov eax, dword [ecx + edx*4 + 0x44]
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x72]
mov byte [esp + 0x10], cl
push ecx
mov ecx, dword [esp + 0x75]
mov byte [esp + 0x16], al
push ecx
push eax
push 0x77b9f8
mov byte [esp + 0x21], ah
call fcn.005f9fc9
add esp, 0x10
mov bl, al
jmp 0x46d03d
mov byte [esp + 0x12], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x10], 0
mov byte [esp + 0x13], 0
cmp byte [esi + 0x138e], 0xff
je 0x46d0d2
mov eax, dword [esp + 0x10]
sub esp, 8
mov edx, esp
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
and esi, 0xff
mov dword [edx], eax
mov eax, dword [esp + 0x28]
mov edi, eax
and ecx, 0xff
mov byte [edx + 4], bl
mov edx, dword [esp + 0x4c]
sar edi, 0xc
sub edi, edx
push 1
cdq
imul edi, esi
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x28]
sub edi, edx
push edi
mov edi, eax
cdq
sar edi, 0xc
xor eax, edx
sub edi, ebp
sub eax, edx
imul edi, esi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar eax, cl
add edi, eax
sub edi, edx
push edi
call fcn.005f6e99
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
add esp, 0x14
jmp 0x46d118
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
sar eax, 0xc
imul eax, dword [esp + 0x58]
sub esp, 8
mov ecx, esp
push 1
mov dword [ecx], edx
cdq
idiv dword [esp + 0x58]
mov byte [ecx + 4], bl
mov ecx, dword [esp + 0x48]
add eax, ecx
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
add eax, dword [esp + 0x64]
push eax
call fcn.005f6e99
add esp, 0x14
xor eax, eax
mov ax, word [edi + 0x10]
mov edi, dword [eax*4 + 0x6ccb20]
test edi, edi
mov dword [esp + 0x2c], edi
jne 0x46cf9d
mov eax, dword [esp + 0x38]
xor ecx, ecx
mov cx, word [eax + 0x3a]
mov eax, dword [ecx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x38], eax
jne 0x46cf61
mov dword [esp + 0x18], 0
mov ecx, dword [esi + 0x53]
mov eax, dword [esp + 0x18]
push eax
mov edx, dword [ecx]
call dword [edx + 0x2b4]
mov edi, eax
mov eax, dword [edi + 0x1e]
test eax, eax
jbe 0x46d29b
mov cx, word [esi + 8]
push ecx
mov ecx, edi
call fcn.0054fd0b
test eax, eax
je 0x46d29b
mov edx, dword [edi + 0x22]
mov byte [esp + 0x12], 0
cmp edx, 0x80
mov byte [esp + 0x11], 0xff
mov byte [esp + 0x10], 0
mov byte [esp + 0x13], 0
jae 0x46d29b
add edi, 6
mov ecx, dword [edi]
mov dword [esp + 0x1c], ecx
mov eax, dword [edi + 4]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x24], eax
mov al, byte [esi + 0x138e]
cmp al, 0xff
je 0x46d255
mov edi, dword [esp + 0x10]
sub esp, 8
mov eax, esp
and edx, 0x1f
mov esi, dword [esp + 0x64]
push edx
mov dword [eax], edi
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x5c]
and esi, 0xff
mov byte [eax + 4], bl
mov eax, dword [esp + 0x2c]
mov edi, eax
and ecx, 0xff
sar edi, 0xc
sub edi, edx
cdq
imul edi, esi
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x28]
sub edi, edx
push edi
mov edi, eax
cdq
sar edi, 0xc
xor eax, edx
sub edi, ebp
sub eax, edx
imul edi, esi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar eax, cl
add edi, eax
sub edi, edx
push edi
call fcn.005f6e27
mov esi, dword [esp + 0x3c]
add esp, 0x14
jmp 0x46d29b
mov edi, dword [esp + 0x10]
sub esp, 8
mov eax, esp
and edx, 0x1f
push edx
mov dword [eax], edi
mov edi, dword [esp + 0x48]
mov byte [eax + 4], bl
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x64]
cdq
idiv dword [esp + 0x58]
add eax, edi
push eax
mov eax, ecx
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
add eax, dword [esp + 0x64]
push eax
call fcn.005f6e27
add esp, 0x14
mov eax, dword [esp + 0x18]
inc eax
cmp eax, 8
mov dword [esp + 0x18], eax
jb 0x46d156
mov ecx, dword [esi + 0x53]
mov edx, dword [ecx]
call dword [edx + 0x10]
xor ecx, ecx
mov cx, word [eax]
mov eax, dword [ecx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x38], eax
je 0x46d77f
xor edx, edx
xor ecx, ecx
mov dl, byte [eax + 0x10fc]
mov dword [esp + 0x60], edx
mov dx, word [esp + 0x6c]
cmp dx, word [eax + 4]
sete cl
mov dword [esp + 0x18], ecx
xor ecx, ecx
mov cx, word [eax + 0xc]
mov ecx, dword [ecx*4 + 0x6ccb20]
test ecx, ecx
mov dword [esp + 0x2c], ecx
je 0x46d762
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0xf7]
lea edx, [eax + 0x1a]
mov ecx, edx
mov dword [esp + 0x7c], esi
mov edi, dword [ecx]
mov dword [esp + 0x1c], edi
mov edx, dword [ecx + 4]
mov dword [esp + 0x20], edx
mov ecx, dword [ecx + 8]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x18]
cmp ecx, 1
jne 0x46d33b
mov eax, 1
jmp 0x46d36d
test byte [eax + 0x10c], 0x10
jne 0x46d36b
mov eax, dword [esp + 0x28]
sar edx, 0xc
mov ecx, dword [eax + 0x53]
push edx
sar edi, 0xc
mov eax, dword [ecx]
push edi
call dword [eax + 0x2c4]
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
neg eax
sbb eax, eax
neg eax
jmp 0x46d36d
xor eax, eax
test eax, eax
je 0x46d741
test byte [esp + 0x64], 1
je 0x46d3c7
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x60]
mov byte [esp + 0x13], 0xff
mov edx, dword [ecx + 0x138a]
mov eax, dword [edx + eax*4 + 0x44]
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x72]
mov byte [esp + 0x10], cl
push ecx
mov ecx, dword [esp + 0x75]
mov byte [esp + 0x16], al
push ecx
push eax
push 0x77b9f8
mov byte [esp + 0x21], ah
call fcn.005f9fc9
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
add esp, 0x10
mov bl, al
jmp 0x46d3db
mov byte [esp + 0x12], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x10], 0
mov byte [esp + 0x13], 0
mov eax, dword [esp + 0x28]
cmp byte [eax + 0x138e], 0xff
je 0x46d484
mov ebp, dword [esp + 0x10]
sub esp, 8
mov eax, esp
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
and esi, 0xff
mov dword [eax], ebp
mov ebp, edx
sar ebp, 0xc
mov byte [eax + 4], bl
mov eax, dword [esp + 0x4c]
sub ebp, eax
mov eax, edx
cdq
imul ebp, esi
xor eax, edx
and ecx, 0xff
sub eax, edx
push 2
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
add ebp, eax
mov eax, edi
sub ebp, edx
mov edx, edi
push ebp
mov ebp, dword [esp + 0x88]
sar edx, 0xc
sub edx, ebp
imul edx, esi
mov dword [esp + 0xac], edx
mov esi, dword [esp + 0x44]
cdq
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
sar eax, cl
mov ecx, dword [esp + 0xac]
add ecx, eax
sub ecx, esi
push ecx
call fcn.005f6e27
mov esi, dword [esp + 0x90]
add esp, 0x14
jmp 0x46d4c4
mov ecx, dword [esp + 0x10]
sub esp, 8
mov eax, esp
push 1
mov dword [eax], ecx
mov byte [eax + 4], bl
mov eax, edx
sar eax, 0xc
imul eax, dword [esp + 0x64]
cdq
idiv dword [esp + 0x58]
add eax, dword [esp + 0x48]
push eax
mov eax, edi
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
add eax, dword [esp + 0x64]
push eax
call fcn.005f6e99
add esp, 0x14
mov eax, dword [esp + 0x38]
mov dx, word [esp + 0x6c]
cmp dx, word [eax + 4]
jne 0x46d741
cmp byte [esi + 0xbb], 0xd
jne 0x46d606
mov ecx, dword [esp + 0x2c]
call fcn.004f6806
test eax, eax
je 0x46d741
push 0xff
push 0x32
push 0xdc
push 0x77b9f8
mov byte [esp + 0x22], 0xdc
mov byte [esp + 0x21], 0x32
mov byte [esp + 0x20], 0xff
mov byte [esp + 0x23], 0xff
call fcn.005f9fc9
mov ecx, dword [esp + 0x38]
mov bl, al
add esp, 0x10
cmp byte [ecx + 0x138e], 0xff
je 0x46d5bc
mov eax, dword [esp + 0x10]
sub esp, 8
mov edx, esp
mov edi, 0x1e
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
mov dword [edx], eax
mov eax, dword [esp + 0x6c]
and esi, 0xff
and ecx, 0xff
mov byte [edx + 4], bl
xor edx, edx
div edi
mov eax, dword [esp + 0x28]
mov edi, eax
sar edi, 0xc
push edx
mov edx, dword [esp + 0x50]
sub edi, edx
cdq
imul edi, esi
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x28]
sub edi, edx
push edi
mov edi, eax
cdq
sar edi, 0xc
xor eax, edx
sub edi, ebp
sub eax, edx
imul edi, esi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar eax, cl
add edi, eax
sub edi, edx
push edi
jmp 0x46d739
mov edx, dword [esp + 0x10]
sub esp, 8
mov eax, dword [esp + 0x6c]
mov ecx, esp
mov dword [ecx], edx
xor edx, edx
mov byte [ecx + 4], bl
mov ecx, 0x1e
div ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
sar eax, 0xc
imul eax, dword [esp + 0x60]
push edx
cdq
idiv dword [esp + 0x58]
add eax, ecx
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
jmp 0x46d734
mov eax, dword [esi + 0x88]
test ah, 8
je 0x46d741
mov edx, dword [esp + 0x2c]
test byte [edx + 0x10c], 0x20
jne 0x46d741
push 0xff
push 0x96
push 0x96
push 0x77b9f8
mov byte [esp + 0x22], 0x96
mov byte [esp + 0x21], 0x96
mov byte [esp + 0x20], 0xff
mov byte [esp + 0x23], 0xff
call fcn.005f9fc9
mov bl, al
mov eax, dword [esp + 0x38]
add esp, 0x10
cmp byte [eax + 0x138e], 0xff
je 0x46d6eb
mov eax, dword [esp + 0x10]
sub esp, 8
mov esi, dword [esp + 0x64]
mov edx, esp
and esi, 0xff
mov ecx, dword [esp + 0x58]
mov dword [edx], eax
mov eax, dword [esp + 0x28]
mov edi, eax
and ecx, 0xff
mov byte [edx + 4], bl
xor edx, edx
mov dl, byte [0x6d0f55]
imul edx, esi
push edx
mov edx, dword [esp + 0x50]
sar edi, 0xc
sub edi, edx
cdq
imul edi, esi
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x28]
sub edi, edx
push edi
mov edi, eax
cdq
sar edi, 0xc
xor eax, edx
sub edi, ebp
sub eax, edx
imul edi, esi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar eax, cl
add edi, eax
sub edi, edx
push edi
jmp 0x46d739
mov ecx, dword [esp + 0x10]
sub esp, 8
mov eax, esp
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x44]
mov dword [eax], ecx
mov ecx, dword [esp + 0x50]
mov byte [eax + 4], bl
xor eax, eax
mov al, byte [0x6d0f55]
imul eax, ecx
cdq
idiv esi
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x64]
cdq
idiv dword [esp + 0x58]
add eax, edi
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, ecx
cdq
idiv esi
add eax, dword [esp + 0x64]
push eax
call fcn.005f6e27
add esp, 0x14
mov eax, dword [esp + 0x2c]
xor edx, edx
mov dx, word [eax + 0x10]
mov eax, dword [edx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x2c], eax
jne 0x46d304
mov eax, dword [esp + 0x38]
xor ecx, ecx
mov cx, word [eax + 0x3a]
mov eax, dword [ecx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x38], eax
jne 0x46d2cd
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x68]
test byte [eax + 0x76], 4
je 0x46d90c
mov eax, dword [eax + 0x13a]
push 0xff
mov dword [esp + 0x94], eax
mov edx, dword [esp + 0x96]
and eax, 0xffff
and edx, 0xffff
shl eax, 0xc
shl edx, 0xc
push 0x96
add eax, 0x800
add edx, 0x800
push 0x96
push 0x77b9f8
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], 0
mov byte [esp + 0x22], 0x96
mov byte [esp + 0x21], 0x96
mov byte [esp + 0x20], 0xff
mov byte [esp + 0x23], 0xff
call fcn.005f9fc9
mov bl, al
mov al, byte [esi + 0x138e]
add esp, 0x10
cmp al, 0xff
je 0x46d8ba
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x10]
and eax, 0xff
sub esp, 8
mov dword [esp + 0x34], eax
mov eax, esp
xor edx, edx
mov edi, dword [esp + 0x64]
mov dword [eax], ecx
mov ecx, 5
and edi, 0xff
mov byte [eax + 4], bl
mov eax, dword [esp + 0x6c]
div ecx
mov eax, dword [esp + 0x28]
mov ecx, eax
sar ecx, 0xc
shl edx, 1
push edx
mov edx, dword [esp + 0x50]
sub ecx, edx
imul ecx, edi
cdq
xor eax, edx
mov dword [esp + 0x88], ecx
mov ecx, dword [esp + 0x38]
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x88]
sar eax, cl
mov ecx, dword [esp + 0x4c]
add edx, eax
mov eax, dword [esp + 0x28]
sub edx, ecx
mov ecx, eax
sar ecx, 0xc
sub ecx, ebp
push edx
imul ecx, edi
cdq
xor eax, edx
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x3c]
sub eax, edx
and eax, 0xfff
mov edi, dword [esp + 0x44]
xor eax, edx
sub eax, edx
sar eax, cl
mov ecx, dword [esp + 0x8c]
add ecx, eax
sub ecx, edi
push ecx
jmp 0x46d904
mov eax, dword [esp + 0x10]
sub esp, 8
mov edx, esp
mov ecx, 5
mov dword [edx], eax
mov eax, dword [esp + 0x6c]
mov byte [edx + 4], bl
xor edx, edx
div ecx
mov eax, dword [esp + 0x28]
sar eax, 0xc
imul eax, dword [esp + 0x60]
shl edx, 1
push edx
cdq
idiv dword [esp + 0x58]
add eax, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
add eax, dword [esp + 0x64]
push eax
call fcn.005f6e27
add esp, 0x14
mov esi, dword [esi + 0x53]
mov ecx, esi
mov edx, dword [esi]
call dword [edx + 0x10]
xor ecx, ecx
mov cx, word [eax]
mov eax, dword [ecx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x38], eax
je 0x46dc1d
xor edx, edx
xor ecx, ecx
mov dl, byte [eax + 0x10fc]
mov dword [esp + 0x60], edx
mov dx, word [esp + 0x6c]
cmp dx, word [eax + 4]
sete cl
mov dword [esp + 0x18], ecx
xor ecx, ecx
mov cx, word [eax + 0xe]
mov eax, dword [ecx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x68], eax
je 0x46dc00
mov edx, dword [esp + 0x68]
add edx, 0x1a
mov edi, dword [edx]
mov dword [esp + 0x1c], edi
mov esi, dword [edx + 4]
mov dword [esp + 0x20], esi
mov eax, dword [edx + 8]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
cmp eax, 1
je 0x46d9b0
mov ecx, dword [esp + 0x28]
sar esi, 0xc
mov ecx, dword [ecx + 0x53]
push esi
sar edi, 0xc
mov edx, dword [ecx]
push edi
call dword [edx + 0x2c4]
test eax, eax
je 0x46dbe3
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
test byte [esp + 0x64], 1
je 0x46d9cd
mov byte [esp + 0x12], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x10], 0
mov byte [esp + 0x13], 0
jmp 0x46da16
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x60]
mov byte [esp + 0x13], 0xff
mov ecx, dword [eax + 0x138a]
mov eax, dword [ecx + edx*4 + 0x44]
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x72]
mov byte [esp + 0x10], cl
push ecx
mov ecx, dword [esp + 0x75]
mov byte [esp + 0x16], al
push ecx
push eax
push 0x77b9f8
mov byte [esp + 0x21], ah
call fcn.005f9fc9
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
add esp, 0x10
mov bl, al
mov edx, dword [esp + 0x68]
mov al, byte [edx + 0x119]
test al, al
jne 0x46dafb
mov eax, dword [esp + 0x28]
cmp byte [eax + 0x138e], 0xff
je 0x46daa7
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x50]
sub esp, 8
and ecx, 0xff
mov edx, esp
mov eax, dword [esp + 0x64]
sar esi, 0xc
mov dword [edx], ebp
and eax, 0xff
mov ebp, dword [esp + 0x48]
mov byte [edx + 4], bl
mov edx, 0x1000
sar edx, cl
push edx
mov edx, dword [esp + 0x50]
sub esi, edx
imul esi, eax
sub esi, ebp
mov ebp, dword [esp + 0x84]
push esi
mov esi, edi
sar esi, 0xc
sub esi, ebp
imul esi, eax
mov eax, edi
cdq
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar eax, cl
add esi, eax
sub esi, edx
push esi
call fcn.005f6d4b
jmp 0x46dbe0
mov eax, dword [esp + 0x58]
sub esp, 8
sar esi, 0xc
imul eax, esi
cdq
idiv dword [esp + 0x54]
mov edx, dword [esp + 0x18]
mov ecx, eax
mov eax, esp
mov dword [eax], edx
mov byte [eax + 4], bl
lea eax, [esi + 1]
imul eax, dword [esp + 0x60]
cdq
idiv dword [esp + 0x54]
sub eax, ecx
push eax
mov eax, dword [esp + 0x48]
add eax, ecx
push eax
mov eax, edi
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
add eax, dword [esp + 0x64]
push eax
call fcn.005f6d4b
jmp 0x46dbe0
mov ecx, dword [esp + 0x28]
cmp byte [ecx + 0x138e], 0xff
je 0x46db8f
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x50]
sub esp, 8
and ecx, 0xff
mov edx, esp
mov ebp, dword [esp + 0x64]
and ebp, 0xff
mov dword [edx], eax
mov eax, dword [esp + 0x4c]
sar edi, 0xc
mov byte [edx + 4], bl
mov edx, 0x1000
sar edx, cl
push edx
mov edx, esi
sar edx, 0xc
sub edx, eax
mov eax, esi
imul edx, ebp
mov dword [esp + 0x88], edx
mov esi, dword [esp + 0x4c]
cdq
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x40]
sar eax, cl
mov ecx, dword [esp + 0x88]
add ecx, eax
sub ecx, esi
mov esi, dword [esp + 0x84]
sub edi, esi
push ecx
imul edi, ebp
sub edi, edx
push edi
call fcn.005f6ce1
add esp, 0x14
mov ebp, esi
jmp 0x46dbe3
mov eax, dword [esp + 0x48]
sub esp, 8
sar edi, 0xc
imul eax, edi
cdq
idiv dword [esp + 0x38]
mov edx, esp
mov ecx, eax
mov eax, dword [esp + 0x18]
mov dword [edx], eax
lea eax, [edi + 1]
imul eax, dword [esp + 0x50]
mov byte [edx + 4], bl
cdq
idiv dword [esp + 0x38]
sub eax, ecx
push eax
mov eax, esi
sar eax, 0xc
imul eax, dword [esp + 0x64]
cdq
idiv dword [esp + 0x58]
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x60]
add edx, ecx
add eax, esi
push eax
push edx
call fcn.005f6ce1
add esp, 0x14
mov ecx, dword [esp + 0x68]
xor eax, eax
mov ax, word [ecx + 0x10]
mov eax, dword [eax*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x68], eax
jne 0x46d965
mov eax, dword [esp + 0x38]
xor edx, edx
mov dx, word [eax + 0x3a]
mov eax, dword [edx*4 + 0x6ccb20]
test eax, eax
mov dword [esp + 0x38], eax
jne 0x46d92e
xor eax, eax
mov byte [esp + 0x12], 0xff
mov byte [esp + 0x11], 0xff
mov byte [esp + 0x10], 0xff
mov byte [esp + 0x13], 0
mov dword [esp + 0x68], eax
mov ecx, dword [esp + 0x28]
push eax
mov dword [esp + 0x70], 0
mov ecx, dword [ecx + 0x53]
mov edx, dword [ecx]
call dword [edx + 0x2ec]
mov ecx, eax
mov eax, dword [ecx]
mov dword [esp + 0x70], eax
cmp word [esp + 0x70], 0
mov dx, word [ecx + 4]
mov word [esp + 0x74], dx
mov cl, byte [ecx + 6]
mov byte [esp + 0x76], cl
je 0x46de2e
mov cl, byte [esp + 0x72]
test cl, cl
jne 0x46dcf3
and eax, 0xffff
mov eax, dword [eax*4 + 0x6ccb20]
mov ecx, dword [eax + 0x19a]
test ecx, ecx
jne 0x46dd3b
mov ecx, eax
call fcn.00511783
mov eax, dword [eax]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x90], eax
mov esi, dword [esp + 0x92]
mov ecx, dword [edx + 0x53]
mov edi, eax
and esi, 0xffff
and edi, 0xffff
mov eax, dword [ecx]
push esi
push edi
call dword [eax + 0x2c4]
test eax, eax
je 0x46dd3b
shl edi, 0xc
shl esi, 0xc
add edi, 0x800
add esi, 0x800
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], 0
jmp 0x46dd33
and eax, 0xffff
mov cl, byte [eax + 0x6cbb20]
test cl, cl
je 0x46dd3b
mov eax, dword [eax*4 + 0x6ccb20]
mov ecx, dword [eax + 0x12]
test ecx, ecx
jne 0x46dd3b
test dword [eax + 0x3ea], 0x20000
je 0x46dd3b
add eax, 0x1a
mov ecx, dword [eax]
mov dword [esp + 0x1c], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x20], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x24], eax
mov dword [esp + 0x6c], 1
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x46de2e
mov ecx, dword [esp + 0x28]
cmp byte [ecx + 0x138e], 0xff
je 0x46dddc
mov eax, dword [esp + 0x10]
sub esp, 8
mov edx, esp
mov edi, 0xa
mov esi, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
mov dword [edx], eax
mov eax, dword [esp + 0x6c]
and esi, 0xff
and ecx, 0xff
mov byte [edx + 4], bl
xor edx, edx
div edi
mov eax, dword [esp + 0x28]
mov edi, eax
sar edi, 0xc
push edx
mov edx, dword [esp + 0x50]
sub edi, edx
cdq
imul edi, esi
xor eax, edx
sub eax, edx
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x4c]
sar eax, cl
add edi, eax
mov eax, dword [esp + 0x28]
sub edi, edx
push edi
mov edi, eax
cdq
sar edi, 0xc
xor eax, edx
sub edi, ebp
sub eax, edx
imul edi, esi
and eax, 0xfff
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
sar eax, cl
add edi, eax
sub edi, edx
push edi
jmp 0x46de26
mov edx, dword [esp + 0x10]
sub esp, 8
mov eax, dword [esp + 0x6c]
mov ecx, esp
mov dword [ecx], edx
xor edx, edx
mov byte [ecx + 4], bl
mov ecx, 0xa
div ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
sar eax, 0xc
imul eax, dword [esp + 0x60]
push edx
cdq
idiv dword [esp + 0x58]
add eax, ecx
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
add eax, dword [esp + 0x64]
push eax
call fcn.005f6e27
add esp, 0x14
mov eax, dword [esp + 0x68]
inc eax
cmp eax, 6
mov dword [esp + 0x68], eax
jb 0x46dc37
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret
mov ecx, dword [esp + 0x10]
sub esp, 8
mov eax, esp
mov esi, dword [esp + 0x44]
push 1
mov dword [eax], ecx
mov byte [eax + 4], bl
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x64]
cdq
idiv dword [esp + 0x58]
add eax, esi
mov esi, dword [esp + 0x60]
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
add eax, esi
push eax
call fcn.005f6e99
mov al, byte [edi + 0x3e6]
add esp, 0x14
test al, 0x80
je 0x46cf22
sub esp, 8
mov byte [esp + 0x1a], 0xff
mov byte [esp + 0x19], 0xff
mov byte [esp + 0x18], 0xff
mov byte [esp + 0x1b], 0
mov eax, dword [esp + 0x18]
mov edx, esp
mov ecx, dword [esp + 0x6c]
and ecx, 7
mov dword [edx], eax
mov eax, dword [esp + 0x28]
sar eax, 0xc
imul eax, dword [esp + 0x60]
mov byte [edx + 4], bl
push ecx
cdq
idiv dword [esp + 0x58]
add eax, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0x2c]
sar eax, 0xc
imul eax, dword [esp + 0x58]
cdq
idiv dword [esp + 0x40]
mov edx, esi
add eax, edx
push eax
call fcn.005f6e27
add esp, 0x14
jmp 0x46cf22