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

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
sub rsp, 0x98
mov rax, qword [rsp + 0xa0]
mov eax, dword [rax + 0x28]
mov dword [rsp + 0x14], eax
mov rax, qword [rsp + 0xa0]
mov eax, dword [rax + 0x2c]
mov dword [rsp + 0x10], eax
mov rcx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0xa8]
add rax, rcx
mov qword [rsp + 0x18], rax
mov rax, qword [rsp + 0xa0]
mov rax, qword [rax + 0x10]
mov qword [rsp + 8], rax
mov rax, qword [rsp + 0xa0]
mov eax, dword [rax + 0x48]
mov dword [rsp + 0x20], eax
mov rax, qword [rsp + 0xa0]
mov ecx, dword [rax + 8]
mov eax, 1
shl eax, cl
mov ecx, eax
sub ecx, 1
mov rax, qword [rsp + 0xa0]
mov eax, dword [rax + 0x40]
and eax, ecx
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x20]
shl eax, 4
mov ecx, eax
mov rax, qword [rsp + 8]
lea rcx, [rax + rcx*2]
mov eax, dword [rsp + 0x28]
lea rax, [rcx + rax*2]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4c838
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4c7ff
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4cbe4
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov rax, qword [rsp + 8]
add rax, 0xe6c
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0xa0]
cmp dword [rax + 0x44], 0
jne 0x4c88e
mov rax, qword [rsp + 0xa0]
cmp dword [rax + 0x40], 0
je 0x4c940
mov rax, qword [rsp + 0xa0]
cmp qword [rax + 0x30], 0
jne 0x4c8b0
mov rax, qword [rsp + 0xa0]
mov rax, qword [rax + 0x38]
mov qword [rsp + 0x78], rax
jmp 0x4c8c1
mov rax, qword [rsp + 0xa0]
mov rax, qword [rax + 0x30]
mov qword [rsp + 0x78], rax
mov rax, qword [rsp + 0xa0]
mov ecx, dword [rax + 4]
mov eax, 1
shl eax, cl
mov ecx, eax
sub ecx, 1
mov rax, qword [rsp + 0xa0]
mov r8d, dword [rax + 0x40]
and r8d, ecx
mov rax, qword [rsp + 0xa0]
mov eax, dword [rax]
movzx ecx, al
shl r8d, cl
mov rcx, qword [rsp + 0xa0]
mov rcx, qword [rcx + 0x18]
mov rax, qword [rsp + 0x78]
movzx edx, byte [rcx + rax - 1]
mov rcx, qword [rsp + 0xa0]
mov eax, 8
sub eax, dword [rcx]
movzx ecx, al
mov eax, edx
sar eax, cl
mov ecx, eax
mov eax, r8d
add eax, ecx
imul eax, eax, 0x300
mov ecx, eax
mov rax, qword [rsp + 0x30]
lea rax, [rax + rcx*2]
mov qword [rsp + 0x30], rax
cmp dword [rsp + 0x20], 7
jae 0x4ca2e
mov dword [rsp + 0x38], 1
mov ecx, dword [rsp + 0x38]
mov rax, qword [rsp + 0x30]
movzx eax, word [rax + rcx*2]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4c9bd
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4c984
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4c9ef
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x38]
mov eax, dword [rsp + 0x38]
add eax, ecx
mov dword [rsp + 0x38], eax
jmp 0x4ca1b
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov ecx, dword [rsp + 0x38]
mov eax, dword [rsp + 0x38]
lea eax, [rcx + rax + 1]
mov dword [rsp + 0x38], eax
cmp dword [rsp + 0x38], 0x100
jb 0x4c953
jmp 0x4cbd8
mov rax, qword [rsp + 0xa0]
mov ecx, dword [rax + 0x4c]
mov rax, qword [rsp + 0xa0]
cmp qword [rax + 0x30], rcx
jae 0x4ca5d
mov rax, qword [rsp + 0xa0]
mov rax, qword [rax + 0x38]
mov qword [rsp + 0x80], rax
jmp 0x4ca69
mov qword [rsp + 0x80], 0
mov rax, qword [rsp + 0xa0]
mov eax, dword [rax + 0x4c]
mov rcx, qword [rsp + 0xa0]
mov rcx, qword [rcx + 0x30]
sub rcx, rax
add rcx, qword [rsp + 0x80]
mov rax, qword [rsp + 0xa0]
mov rax, qword [rax + 0x18]
movzx eax, byte [rax + rcx]
mov dword [rsp + 0x40], eax
mov dword [rsp + 0x44], 0x100
mov dword [rsp + 0x3c], 1
mov eax, dword [rsp + 0x40]
shl eax, 1
mov dword [rsp + 0x40], eax
mov ecx, dword [rsp + 0x44]
mov eax, dword [rsp + 0x40]
and eax, ecx
mov dword [rsp + 0x50], eax
mov ecx, dword [rsp + 0x44]
mov rax, qword [rsp + 0x30]
lea rcx, [rax + rcx*2]
mov eax, dword [rsp + 0x50]
lea rcx, [rcx + rax*2]
mov eax, dword [rsp + 0x3c]
lea rax, [rcx + rax*2]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x48]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4cb4e
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4cb15
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4cb90
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x3c]
mov eax, dword [rsp + 0x3c]
add eax, ecx
mov dword [rsp + 0x3c], eax
mov ecx, dword [rsp + 0x50]
not ecx
mov eax, dword [rsp + 0x44]
and eax, ecx
mov dword [rsp + 0x44], eax
jmp 0x4cbca
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov ecx, dword [rsp + 0x3c]
mov eax, dword [rsp + 0x3c]
lea eax, [rcx + rax + 1]
mov dword [rsp + 0x3c], eax
mov ecx, dword [rsp + 0x50]
mov eax, dword [rsp + 0x44]
and eax, ecx
mov dword [rsp + 0x44], eax
cmp dword [rsp + 0x3c], 0x100
jb 0x4caaf
mov dword [rsp], 1
jmp 0x4d65f
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov ecx, dword [rsp + 0x20]
mov rax, qword [rsp + 8]
lea rax, [rax + rcx*2 + 0x180]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4cc7b
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4cc42
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4ccc1
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov dword [rsp + 0x20], 0
mov rax, qword [rsp + 8]
add rax, 0x664
mov qword [rsp + 0x30], rax
mov dword [rsp], 2
jmp 0x4d062
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov dword [rsp], 3
mov ecx, dword [rsp + 0x20]
mov rax, qword [rsp + 8]
lea rax, [rax + rcx*2 + 0x198]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4cd5f
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4cd26
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4ceb5
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov eax, dword [rsp + 0x20]
shl eax, 4
mov ecx, eax
mov rax, qword [rsp + 8]
lea rcx, [rax + rcx*2 + 0x1e0]
mov eax, dword [rsp + 0x28]
lea rax, [rcx + rax*2]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4ce0d
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4cdd4
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4ce94
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4ce88
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4ce4f
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, 3
jmp 0x4d6b8
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
jmp 0x4d04a
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov ecx, dword [rsp + 0x20]
mov rax, qword [rsp + 8]
lea rax, [rax + rcx*2 + 0x1b0]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4cf4c
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4cf13
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4cf73
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
jmp 0x4d04a
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov ecx, dword [rsp + 0x20]
mov rax, qword [rsp + 8]
lea rax, [rax + rcx*2 + 0x1c8]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4d00a
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4cfd1
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4d02e
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
jmp 0x4d04a
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov dword [rsp + 0x20], 0xc
mov rax, qword [rsp + 8]
add rax, 0xa68
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x58], rax
mov rax, qword [rsp + 0x58]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4d0d1
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4d098
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4d120
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov eax, dword [rsp + 0x28]
shl eax, 3
mov ecx, eax
mov rax, qword [rsp + 0x30]
lea rax, [rax + rcx*2 + 4]
mov qword [rsp + 0x58], rax
mov dword [rsp + 0x60], 0
mov dword [rsp + 0x64], 8
jmp 0x4d23a
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0x30]
add rax, 2
mov qword [rsp + 0x58], rax
mov rax, qword [rsp + 0x58]
movzx eax, word [rax]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4d1af
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4d176
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4d1fe
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov eax, dword [rsp + 0x28]
shl eax, 3
mov ecx, eax
mov rax, qword [rsp + 0x30]
lea rax, [rax + rcx*2 + 0x104]
mov qword [rsp + 0x58], rax
mov dword [rsp + 0x60], 8
mov dword [rsp + 0x64], 8
jmp 0x4d23a
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0x30]
add rax, 0x204
mov qword [rsp + 0x58], rax
mov dword [rsp + 0x60], 0x10
mov dword [rsp + 0x64], 0x100
mov dword [rsp + 0x54], 1
mov ecx, dword [rsp + 0x54]
mov rax, qword [rsp + 0x58]
movzx eax, word [rax + rcx*2]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4d2ac
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4d273
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4d2de
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x54]
mov eax, dword [rsp + 0x54]
add eax, ecx
mov dword [rsp + 0x54], eax
jmp 0x4d30a
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov ecx, dword [rsp + 0x54]
mov eax, dword [rsp + 0x54]
lea eax, [rcx + rax + 1]
mov dword [rsp + 0x54], eax
mov eax, dword [rsp + 0x64]
cmp dword [rsp + 0x54], eax
jb 0x4d242
mov ecx, dword [rsp + 0x64]
mov eax, dword [rsp + 0x54]
sub eax, ecx
mov dword [rsp + 0x54], eax
mov ecx, dword [rsp + 0x60]
mov eax, dword [rsp + 0x54]
add eax, ecx
mov dword [rsp + 0x54], eax
cmp dword [rsp + 0x20], 4
jae 0x4d65f
cmp dword [rsp + 0x54], 4
jae 0x4d353
mov eax, dword [rsp + 0x54]
mov dword [rsp + 0x88], eax
jmp 0x4d35e
mov dword [rsp + 0x88], 3
mov eax, dword [rsp + 0x88]
shl eax, 6
mov ecx, eax
mov rax, qword [rsp + 8]
lea rax, [rax + rcx*2 + 0x360]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x68], 1
mov ecx, dword [rsp + 0x68]
mov rax, qword [rsp + 0x30]
movzx eax, word [rax + rcx*2]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4d3ee
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4d3b5
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4d420
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x68]
mov eax, dword [rsp + 0x68]
add eax, ecx
mov dword [rsp + 0x68], eax
jmp 0x4d44c
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov ecx, dword [rsp + 0x68]
mov eax, dword [rsp + 0x68]
lea eax, [rcx + rax + 1]
mov dword [rsp + 0x68], eax
cmp dword [rsp + 0x68], 0x40
jb 0x4d384
mov eax, dword [rsp + 0x68]
sub eax, 0x40
mov dword [rsp + 0x68], eax
cmp dword [rsp + 0x68], 4
jb 0x4d65f
mov eax, dword [rsp + 0x68]
shr eax, 1
sub eax, 1
mov dword [rsp + 0x6c], eax
cmp dword [rsp + 0x68], 0xe
jae 0x4d4bd
mov edx, dword [rsp + 0x68]
and edx, 1
or edx, 2
mov eax, dword [rsp + 0x6c]
movzx ecx, al
mov eax, edx
shl eax, cl
mov ecx, eax
mov rax, qword [rsp + 8]
lea rax, [rax + rcx*2 + 0x560]
mov ecx, dword [rsp + 0x68]
shl rcx, 1
sub rax, rcx
sub rax, 2
mov qword [rsp + 0x30], rax
jmp 0x4d579
mov eax, dword [rsp + 0x6c]
sub eax, 4
mov dword [rsp + 0x6c], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4d521
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4d4e8
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 1
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x14]
mov eax, dword [rsp + 0x10]
sub eax, ecx
shr eax, 0x1f
sub eax, 1
mov ecx, dword [rsp + 0x14]
and ecx, eax
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov eax, dword [rsp + 0x6c]
sub eax, 1
mov dword [rsp + 0x6c], eax
cmp dword [rsp + 0x6c], 0
jne 0x4d4c8
mov rax, qword [rsp + 8]
add rax, 0x644
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x6c], 4
mov dword [rsp + 0x70], 1
mov ecx, dword [rsp + 0x70]
mov rax, qword [rsp + 0x30]
movzx eax, word [rax + rcx*2]
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x14], 0x1000000
jae 0x4d5eb
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4d5b2
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x14]
shr eax, 0xb
imul eax, dword [rsp + 0x24]
mov dword [rsp + 0x2c], eax
mov eax, dword [rsp + 0x2c]
cmp dword [rsp + 0x10], eax
jae 0x4d61d
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x70]
mov eax, dword [rsp + 0x70]
add eax, ecx
mov dword [rsp + 0x70], eax
jmp 0x4d649
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x14]
sub eax, ecx
mov dword [rsp + 0x14], eax
mov ecx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x10]
sub eax, ecx
mov dword [rsp + 0x10], eax
mov ecx, dword [rsp + 0x70]
mov eax, dword [rsp + 0x70]
lea eax, [rcx + rax + 1]
mov dword [rsp + 0x70], eax
mov eax, dword [rsp + 0x6c]
sub eax, 1
mov dword [rsp + 0x6c], eax
cmp dword [rsp + 0x6c], 0
jne 0x4d581
cmp dword [rsp + 0x14], 0x1000000
jae 0x4d6b5
mov rax, qword [rsp + 0x18]
cmp qword [rsp + 0xa8], rax
jb 0x4d67c
xor eax, eax
jmp 0x4d6b8
mov eax, dword [rsp + 0x14]
shl eax, 8
mov dword [rsp + 0x14], eax
mov edx, dword [rsp + 0x10]
shl edx, 8
mov rax, qword [rsp + 0xa8]
movzx ecx, byte [rax]
mov eax, edx
or eax, ecx
mov dword [rsp + 0x10], eax
mov rax, qword [rsp + 0xa8]
add rax, 1
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp]
add rsp, 0x98
ret