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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov eax, 0xfffffffe
test rcx, rcx
mov rsi, rcx
mov edi, edx
je 0x46e3bb
cmp qword [rcx + 0x30], 0
je 0x46e3bb
cmp qword [rcx + 0x38], 0
je 0x46e3bb
mov rbx, qword [rcx + 0x28]
test rbx, rbx
je 0x46e3bb
cmp rcx, qword [rbx]
je 0x46e3d0
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov edx, dword [rbx + 8]
movabs r8, 0x2002000088008001
lea ecx, [rdx - 0x2a]
shr r8, cl
cmp ecx, 0x3d
mov ecx, 1
not r8
cmova r8, rcx
cmp edx, 0x71
setne r9b
cmp edx, 0x29a
setne cl
test r9b, cl
je 0x46e40d
and r8d, 1
jne 0x46e3bb
cmp edi, 5
ja 0x46f692
cmp qword [rsi + 0x10], 0
je 0x46f6a0
mov eax, dword [rsi + 8]
test eax, eax
je 0x46e432
cmp qword [rsi], 0
je 0x46f6a0
cmp edi, 4
setne cl
cmp edx, 0x29a
jne 0x46e448
test cl, cl
jne 0x46f6a0
mov r11d, dword [rsi + 0x18]
test r11d, r11d
je 0x46e840
mov r10d, dword [rbx + 0x28]
mov r8d, dword [rbx + 0x40]
mov dword [rbx + 0x40], edi
test r10d, r10d
jne 0x46e860
test eax, eax
jne 0x46e830
xor eax, eax
cmp edi, 5
lea r10d, [rdi + rdi]
sete al
lea r9d, [r8 + r8]
lea eax, [rax + rax*8]
sub r10d, eax
xor eax, eax
cmp r8d, 5
setge al
lea eax, [rax + rax*8]
sub r9d, eax
cmp r10d, r9d
jg 0x46e4a3
test cl, cl
jne 0x46e840
cmp edx, 0x29a
je 0x46e892
cmp edx, 0x2a
je 0x46e8a1
cmp edx, 0x39
je 0x46ef00
cmp edx, 0x45
je 0x46ea60
cmp edx, 0x49
je 0x46f462
cmp edx, 0x5b
je 0x46f6b9
cmp edx, 0x67
je 0x46f6de
mov eax, dword [rsi + 8]
test eax, eax
jne 0x46e510
mov eax, dword [rbx + 0x9c]
test eax, eax
jne 0x46e510
test edi, edi
je 0x46e820
cmp dword [rbx + 8], 0x29a
je 0x46e56e
nop word [rax + rax]
movsxd rax, dword [rbx + 0xac]
test eax, eax
je 0x46ea50
mov edx, dword [rbx + 0xb0]
cmp edx, 2
je 0x46e691
cmp edx, 3
je 0x46f100
lea r8, [0x004b7ee0]
shl rax, 4
mov edx, edi
mov rcx, rbx
call qword [r8 + rax + 8]
lea edx, [rax - 2]
cmp edx, 1
jbe 0x46e800
mov edx, eax
and edx, 0xfffffffd
test edx, edx
je 0x46e812
cmp eax, 1
je 0x46e9f0
cmp edi, 4
jne 0x46e820
mov eax, dword [rbx + 0x2c]
test eax, eax
jle 0x46f7d3
cmp eax, 2
je 0x46f6ea
mov eax, dword [rbx + 0x28]
mov edx, dword [rsi + 0x4c]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov r8d, edx
shr edx, 0x10
shr r8d, 0x18
mov byte [rcx + rax], r8b
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
movzx edx, word [rsi + 0x4c]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov r8d, edx
shr r8d, 8
mov byte [rcx + rax], r8b
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rax], dl
mov rbp, qword [rsi + 0x28]
mov rcx, rbp
call fcn.00476560
mov edi, dword [rbp + 0x28]
cmp dword [rsi + 0x18], edi
cmovbe edi, dword [rsi + 0x18]
test edi, edi
jne 0x46f4b4
mov eax, dword [rbx + 0x2c]
test eax, eax
jle 0x46e617
neg eax
mov dword [rbx + 0x2c], eax
mov edx, dword [rbx + 0x28]
xor eax, eax
test edx, edx
sete al
jmp 0x46e3bb
movsxd rax, dword [rbx + 0x84]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x46e647
add rax, qword [rbx + 0x50]
mov rdx, rax
xor r9d, r9d
mov rcx, rbx
call fcn.00476770
mov rbp, qword [rbx]
mov eax, dword [rbx + 0x94]
mov r13, qword [rbp + 0x28]
mov dword [rbx + 0x84], eax
mov rcx, r13
call fcn.00476560
mov r12d, dword [r13 + 0x28]
cmp dword [rbp + 0x18], r12d
cmovbe r12d, dword [rbp + 0x18]
test r12d, r12d
jne 0x46f59d
mov rax, qword [rbx]
mov eax, dword [rax + 0x18]
test eax, eax
je 0x46e812
mov eax, dword [rbx + 0x9c]
jmp 0x46e746
mov eax, dword [rbx + 0x94]
mov rdx, qword [rbx + 0x50]
mov dword [rbx + 0x88], 0
mov rcx, qword [rbx + 0x16e8]
movzx eax, byte [rdx + rax]
mov edx, dword [rbx + 0x16f4]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], 0
mov edx, dword [rbx + 0x16f4]
mov rcx, qword [rbx + 0x16e8]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], 0
mov edx, dword [rbx + 0x16f4]
mov rcx, qword [rbx + 0x16e8]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], al
add word [rbx + rax*4 + 0xbc], 1
mov ecx, dword [rbx + 0x94]
mov eax, dword [rbx + 0x9c]
lea r8d, [rcx + 1]
sub eax, 1
mov ecx, dword [rbx + 0x16f8]
cmp dword [rbx + 0x16f4], ecx
mov dword [rbx + 0x9c], eax
mov dword [rbx + 0x94], r8d
je 0x46e630
test eax, eax
jne 0x46e6a0
mov rcx, rbx
call fcn.0046c110
mov eax, dword [rbx + 0x9c]
test eax, eax
jne 0x46e6a0
test edi, edi
je 0x46e812
cmp edi, 4
mov dword [rbx + 0x1708], 0
je 0x46f93d
mov r14d, dword [rbx + 0x16f4]
test r14d, r14d
je 0x46e9f0
movsxd rax, dword [rbx + 0x84]
mov r8d, dword [rbx + 0x94]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x46e7ad
add rax, qword [rbx + 0x50]
mov rdx, rax
xor r9d, r9d
mov rcx, rbx
call fcn.00476770
mov rbp, qword [rbx]
mov eax, dword [rbx + 0x94]
mov r12, qword [rbp + 0x28]
mov dword [rbx + 0x84], eax
mov rcx, r12
call fcn.00476560
mov r13d, dword [r12 + 0x28]
cmp dword [rbp + 0x18], r13d
cmovbe r13d, dword [rbp + 0x18]
test r13d, r13d
jne 0x46fa4d
mov rax, qword [rbx]
mov r11d, dword [rax + 0x18]
xor eax, eax
test r11d, r11d
setne al
mov edx, eax
jmp 0x46e55d
and eax, 0xfffffffd
test eax, eax
mov dword [rbx + 8], 0x29a
jne 0x46e56e
mov eax, dword [rsi + 0x18]
test eax, eax
jne 0x46e820
mov dword [rbx + 0x40], 0xffffffff
xor eax, eax
jmp 0x46e3bb
cmp edx, 0x29a
jne 0x46e4af
nop dword [rax]
mov rax, qword [0x004bfa70]
mov rax, qword [rax + 0x38]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x46e3bb
mov rcx, rbx
call fcn.00476560
mov ebp, dword [rbx + 0x28]
mov eax, dword [rsi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
jne 0x46eea0
test eax, eax
je 0x46ea40
mov edx, dword [rbx + 8]
cmp edx, 0x29a
jne 0x46e4af
mov r9d, dword [rsi + 8]
test r9d, r9d
je 0x46e4e5
jmp 0x46e840
mov r8d, dword [rbx + 0x2c]
test r8d, r8d
jne 0x46e8c0
mov dword [rbx + 8], 0x71
jmp 0x46e4e5
mov eax, dword [rbx + 0x48]
shl eax, 0xc
lea ecx, [rax - 0x7800]
xor eax, eax
cmp dword [rbx + 0xb0], 1
jle 0x46f430
mov edx, dword [rbx + 0x94]
or ecx, eax
mov eax, ecx
or eax, 0x20
test edx, edx
mov edx, 0x8421085
cmovne ecx, eax
mov eax, ecx
mul edx
sub ecx, edx
shr ecx, 1
add ecx, edx
mov edx, dword [rbx + 0x28]
shr ecx, 4
mov eax, ecx
shl eax, 5
sub eax, ecx
lea r8d, [rdx + 1]
mov rcx, qword [rbx + 0x10]
add eax, 0x1f
mov dword [rbx + 0x28], r8d
mov r8d, eax
shr r8d, 8
mov byte [rcx + rdx], r8b
mov edx, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea r8d, [rdx + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rdx], al
mov ecx, dword [rbx + 0x94]
test ecx, ecx
je 0x46e9a1
mov eax, dword [rbx + 0x28]
mov edx, dword [rsi + 0x4c]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov r8d, edx
shr edx, 0x10
shr r8d, 0x18
mov byte [rcx + rax], r8b
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
movzx edx, word [rsi + 0x4c]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov r8d, edx
shr r8d, 8
mov byte [rcx + rax], r8b
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rax], dl
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.00477890
mov r12, qword [rsi + 0x28]
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x71
mov rcx, r12
call fcn.00476560
mov ebp, dword [r12 + 0x28]
cmp dword [rsi + 0x18], ebp
cmovbe ebp, dword [rsi + 0x18]
test ebp, ebp
jne 0x46f0c0
mov eax, dword [rbx + 0x28]
test eax, eax
jne 0x46e819
mov edx, dword [rbx + 8]
jmp 0x46e4b8
cmp edi, 1
je 0x46f549
cmp edi, 5
je 0x46ea17
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.004763c0
cmp edi, 3
je 0x46fa8c
mov r12, qword [rsi + 0x28]
mov rcx, r12
call fcn.00476560
mov ebp, dword [r12 + 0x28]
mov eax, dword [rsi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
jne 0x46f791
test eax, eax
jne 0x46e56e
mov dword [rbx + 0x40], 0xffffffff
jmp 0x46e3bb
mov edx, edi
mov rcx, rbx
call fcn.0046ca80
jmp 0x46e54c
mov rax, qword [rbx + 0x30]
mov rdx, qword [rax + 0x10]
test rdx, rdx
je 0x46ebd7
movzx r13d, word [rax + 0x18]
mov r9d, dword [rbx + 0x38]
mov r12d, dword [rbx + 0x28]
mov eax, dword [rbx + 0x18]
sub r13d, r9d
mov ebp, r12d
lea ecx, [r12 + r13]
cmp eax, ecx
jb 0x46eabc
jmp 0x46eb7e
mov r12d, dword [rbx + 0x28]
test r12d, r12d
jne 0x46e819
mov eax, dword [rbx + 0x18]
sub r13d, ebp
cmp eax, r13d
jae 0x46eb70
mov rdx, qword [rbx + 0x30]
mov r9d, dword [rbx + 0x38]
mov rdx, qword [rdx + 0x10]
mov r14d, r12d
sub eax, r12d
add rdx, r9
mov rcx, r14
add rcx, qword [rbx + 0x10]
mov r8d, eax
mov rbp, r8
call sub.msvcrt.dll_memcpy
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x18]
mov r10d, dword [rax + 0x3c]
mov dword [rbx + 0x28], r8d
test r10d, r10d
je 0x46eaf1
cmp r8d, r12d
ja 0x46eb50
mov r14, qword [rsi + 0x28]
add dword [rbx + 0x38], ebp
mov rcx, r14
call fcn.00476560
mov r12d, dword [r14 + 0x28]
cmp dword [rsi + 0x18], r12d
cmovbe r12d, dword [rsi + 0x18]
test r12d, r12d
je 0x46ea94
mov rcx, qword [rsi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, r12d
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rsi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rsi + 0x1c], r12d
sub dword [rsi + 0x18], r12d
sub dword [r14 + 0x28], r12d
jne 0x46ea94
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
jmp 0x46ea94
mov rdx, r14
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, r12d
call fcn.00478460
mov dword [rsi + 0x4c], eax
jmp 0x46eaf1
mov rax, qword [rbx + 0x30]
mov r9d, dword [rbx + 0x38]
xor ebp, ebp
mov rdx, qword [rax + 0x10]
mov rcx, rbp
add rcx, qword [rbx + 0x10]
mov eax, r9d
add rdx, rax
mov r8d, r13d
call sub.msvcrt.dll_memcpy
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x28]
mov r9d, dword [rax + 0x3c]
add r8d, r13d
mov dword [rbx + 0x28], r8d
test r9d, r9d
je 0x46ebd0
cmp r8d, r12d
jbe 0x46ebd0
mov rdx, rbp
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, r12d
call fcn.00478460
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
nop dword [rax]
mov dword [rbx + 0x38], 0
mov dword [rbx + 8], 0x49
cmp qword [rax + 0x20], 0
je 0x46ece7
mov r9d, dword [rbx + 0x28]
mov r8d, r9d
jmp 0x46ec22
mov rdx, qword [rax + 0x20]
mov eax, dword [rbx + 0x38]
lea ecx, [rax + 1]
mov dword [rbx + 0x38], ecx
movzx eax, byte [rdx + rax]
lea ecx, [r8 + 1]
mov rdx, qword [rbx + 0x10]
mov dword [rbx + 0x28], ecx
test al, al
mov byte [rdx + r8], al
je 0x46ecb0
mov r8d, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
cmp dword [rbx + 0x18], r8d
jne 0x46ebf2
mov ecx, dword [rax + 0x3c]
test ecx, ecx
je 0x46ec38
cmp r9d, r8d
jb 0x46ee85
mov r12, qword [rsi + 0x28]
mov rcx, r12
call fcn.00476560
mov ebp, dword [r12 + 0x28]
cmp dword [rsi + 0x18], ebp
cmovbe ebp, dword [rsi + 0x18]
test ebp, ebp
jne 0x46ec70
mov r8d, dword [rbx + 0x28]
test r8d, r8d
jne 0x46e819
mov rax, qword [rbx + 0x30]
xor r9d, r9d
jmp 0x46ebf2
mov rcx, qword [rsi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rsi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rsi + 0x1c], ebp
sub dword [rsi + 0x18], ebp
sub dword [r12 + 0x28], ebp
jne 0x46ec54
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
jmp 0x46ec54
mov rax, qword [rbx + 0x30]
mov edx, dword [rax + 0x3c]
test edx, edx
je 0x46ece0
mov r8d, dword [rbx + 0x28]
cmp r9d, r8d
jae 0x46ece0
mov edx, r9d
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
call fcn.00478460
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
nop dword [rax]
mov dword [rbx + 0x38], 0
mov dword [rbx + 8], 0x5b
cmp qword [rax + 0x30], 0
je 0x46f541
mov r9d, dword [rbx + 0x28]
mov r8d, r9d
jmp 0x46ed32
mov rdx, qword [rax + 0x30]
mov eax, dword [rbx + 0x38]
lea ecx, [rax + 1]
mov dword [rbx + 0x38], ecx
movzx eax, byte [rdx + rax]
lea ecx, [r8 + 1]
mov rdx, qword [rbx + 0x10]
mov dword [rbx + 0x28], ecx
test al, al
mov byte [rdx + r8], al
je 0x46edc0
mov r8d, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
cmp dword [rbx + 0x18], r8d
jne 0x46ed02
mov eax, dword [rax + 0x3c]
test eax, eax
je 0x46ed48
cmp r9d, r8d
jb 0x46eee0
mov r12, qword [rsi + 0x28]
mov rcx, r12
call fcn.00476560
mov ebp, dword [r12 + 0x28]
cmp dword [rsi + 0x18], ebp
cmovbe ebp, dword [rsi + 0x18]
test ebp, ebp
jne 0x46ed80
mov r8d, dword [rbx + 0x28]
test r8d, r8d
jne 0x46e819
mov rax, qword [rbx + 0x30]
xor r9d, r9d
jmp 0x46ed02
mov rcx, qword [rsi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rsi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rsi + 0x1c], ebp
sub dword [rsi + 0x18], ebp
sub dword [r12 + 0x28], ebp
jne 0x46ed64
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
jmp 0x46ed64
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x3c]
test eax, eax
je 0x46edd8
mov r8d, dword [rbx + 0x28]
cmp r9d, r8d
jb 0x46f528
mov dword [rbx + 8], 0x67
test eax, eax
je 0x46ee4e
mov eax, dword [rbx + 0x28]
lea edx, [rax + 2]
cmp edx, dword [rbx + 0x18]
jbe 0x46ee19
mov r12, qword [rsi + 0x28]
mov rcx, r12
call fcn.00476560
mov ebp, dword [r12 + 0x28]
cmp dword [rsi + 0x18], ebp
cmovbe ebp, dword [rsi + 0x18]
test ebp, ebp
jne 0x46f4eb
mov eax, dword [rbx + 0x28]
test eax, eax
jne 0x46e819
lea ecx, [rax + 1]
mov rdx, qword [rbx + 0x10]
xor r8d, r8d
mov dword [rbx + 0x28], ecx
mov ecx, dword [rsi + 0x4c]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov edx, dword [rsi + 0x4c]
shr edx, 8
mov byte [rcx + rax], dl
xor edx, edx
xor ecx, ecx
call fcn.00478460
mov dword [rsi + 0x4c], eax
mov r12, qword [rsi + 0x28]
mov dword [rbx + 8], 0x71
mov rcx, r12
call fcn.00476560
mov ebp, dword [r12 + 0x28]
cmp dword [rsi + 0x18], ebp
cmovbe ebp, dword [rsi + 0x18]
test ebp, ebp
jne 0x46f560
mov eax, dword [rbx + 0x28]
test eax, eax
je 0x46e4e5
jmp 0x46e819
mov edx, r9d
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
call fcn.00478460
mov dword [rsi + 0x4c], eax
jmp 0x46ec38
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rbx + 0x20]
mov r12d, ebp
mov r8, r12
call sub.msvcrt.dll_memcpy
mov eax, dword [rsi + 0x18]
add qword [rsi + 0x10], r12
add qword [rbx + 0x20], r12
add dword [rsi + 0x1c], ebp
sub eax, ebp
mov dword [rsi + 0x18], eax
sub dword [rbx + 0x28], ebp
jne 0x46e87b
mov rdx, qword [rbx + 0x10]
mov qword [rbx + 0x20], rdx
jmp 0x46e87b
mov edx, r9d
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
call fcn.00478460
mov dword [rsi + 0x4c], eax
jmp 0x46ed48
xor edx, edx
xor ecx, ecx
xor r8d, r8d
call fcn.00478460
mov dword [rsi + 0x4c], eax
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0x1f
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0x8b
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 8
mov rax, qword [rbx + 0x30]
test rax, rax
je 0x46f7dd
mov r8d, dword [rbx + 0x28]
mov ebp, dword [rax]
mov r12d, dword [rax + 0x3c]
mov r9, qword [rbx + 0x10]
test ebp, ebp
lea edx, [r8 + 1]
mov dword [rbx + 0x28], edx
setne dl
test r12d, r12d
setne cl
cmp qword [rax + 0x10], 0
mov r13d, edx
lea ecx, [r13 + rcx*2]
setne dl
shl edx, 2
add ecx, edx
cmp qword [rax + 0x20], 0
mov r14d, ecx
setne dl
cmp qword [rax + 0x30], 0
lea edx, [r14 + rdx*8]
setne al
shl eax, 4
add eax, edx
mov byte [r9 + r8], al
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, qword [rbx + 0x30]
mov ecx, dword [rcx + 4]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov rdx, qword [rbx + 0x30]
mov edx, dword [rdx + 4]
shr edx, 8
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, qword [rbx + 0x30]
movzx ecx, word [rcx + 6]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, qword [rbx + 0x30]
movzx ecx, byte [rcx + 7]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov ecx, dword [rbx + 0xac]
lea edx, [rax + 1]
add rax, qword [rbx + 0x10]
cmp ecx, 9
mov dword [rbx + 0x28], edx
mov edx, 2
je 0x46f040
cmp dword [rbx + 0xb0], 1
jg 0x46f036
xor edx, edx
cmp ecx, 1
jg 0x46f040
mov edx, 4
nop dword [rax + rax]
mov byte [rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, qword [rbx + 0x30]
mov ecx, dword [rcx + 0xc]
mov byte [rdx + rax], cl
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x10], 0
je 0x46f097
mov edx, dword [rbx + 0x28]
mov eax, dword [rax + 0x18]
mov rcx, qword [rbx + 0x10]
lea r8d, [rdx + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rdx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov rdx, qword [rbx + 0x30]
mov edx, dword [rdx + 0x18]
shr edx, 8
mov byte [rcx + rax], dl
mov rax, qword [rbx + 0x30]
mov r11d, dword [rax + 0x3c]
test r11d, r11d
jne 0x46f6c2
mov dword [rbx + 0x38], 0
mov dword [rbx + 8], 0x45
jmp 0x46ea64
mov rcx, qword [rsi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rsi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rsi + 0x1c], ebp
sub dword [rsi + 0x18], ebp
sub dword [r12 + 0x28], ebp
jne 0x46e9d7
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
jmp 0x46e9d7
mov r12, qword [0x004bf830]
mov rbp, qword [0x004bf7e0]
mov eax, dword [rbx + 0x9c]
mov r13d, 0x102
jmp 0x46f1d8
mov dword [rbx + 0x88], 0
mov edx, dword [rbx + 0x94]
mov r8, qword [rbx + 0x50]
test edx, edx
jne 0x46f230
xor edx, edx
movzx eax, byte [r8 + rdx]
mov edx, dword [rbx + 0x16f4]
mov rcx, qword [rbx + 0x16e8]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], 0
mov edx, dword [rbx + 0x16f4]
mov rcx, qword [rbx + 0x16e8]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], 0
mov edx, dword [rbx + 0x16f4]
mov rcx, qword [rbx + 0x16e8]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], al
xor edx, edx
add word [rbx + rax*4 + 0xbc], 1
mov eax, dword [rbx + 0x16f8]
cmp dword [rbx + 0x16f4], eax
mov ecx, dword [rbx + 0x94]
mov eax, dword [rbx + 0x9c]
sete dl
lea r8d, [rcx + 1]
sub eax, 1
test edx, edx
mov dword [rbx + 0x9c], eax
mov dword [rbx + 0x94], r8d
jne 0x46f3c8
cmp eax, 0x102
ja 0x46f120
mov rcx, rbx
call fcn.0046c110
mov eax, dword [rbx + 0x9c]
cmp eax, 0x102
ja 0x46f120
test edi, edi
je 0x46e812
test eax, eax
je 0x46f5d7
cmp eax, 2
mov dword [rbx + 0x88], 0
ja 0x46f12a
mov r8, qword [rbx + 0x50]
mov edx, dword [rbx + 0x94]
jmp 0x46f13e
lea rcx, [r8 + rdx - 1]
movzx r11d, byte [rcx]
movzx r9d, byte [rcx]
cmp byte [rcx + 1], r11b
jne 0x46f13e
movzx r10d, byte [rcx + 2]
cmp r9d, r10d
jne 0x46f13e
movzx r10d, byte [rcx + 3]
cmp r9d, r10d
jne 0x46f13e
add rcx, 3
lea r11, [r8 + rdx + 0x102]
jmp 0x46f2e0
movzx r10d, byte [rcx + 2]
cmp r9d, r10d
jne 0x46faf8
movzx r10d, byte [rcx + 3]
cmp r9d, r10d
jne 0x46faef
movzx r10d, byte [rcx + 4]
cmp r9d, r10d
jne 0x46fae6
movzx r10d, byte [rcx + 5]
cmp r9d, r10d
jne 0x46fb13
movzx r10d, byte [rcx + 6]
cmp r9d, r10d
jne 0x46fb0a
movzx r10d, byte [rcx + 7]
cmp r9d, r10d
jne 0x46fb01
add rcx, 8
movzx r10d, byte [rcx]
cmp r10d, r9d
sete r14b
cmp r11, rcx
seta r10b
test r14b, r10b
je 0x46f2ee
movzx r10d, byte [rcx + 1]
cmp r9d, r10d
je 0x46f271
add rcx, 1
sub r11, rcx
mov ecx, r13d
sub ecx, r11d
cmp ecx, eax
mov dword [rbx + 0x88], ecx
jbe 0x46f8b6
mov dword [rbx + 0x88], eax
mov ecx, eax
mov edx, dword [rbx + 0x16f4]
lea eax, [rcx - 3]
mov rcx, qword [rbx + 0x16e8]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], 1
mov edx, dword [rbx + 0x16f4]
mov rcx, qword [rbx + 0x16e8]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], 0
mov edx, dword [rbx + 0x16f4]
mov rcx, qword [rbx + 0x16e8]
lea r8d, [rdx + 1]
mov dword [rbx + 0x16f4], r8d
mov byte [rcx + rdx], al
movzx eax, al
movzx eax, byte [r12 + rax]
xor edx, edx
add word [rbx + rax*4 + 0x4c0], 1
movzx eax, byte [rbp]
add word [rbx + rax*4 + 0x9b0], 1
mov eax, dword [rbx + 0x16f8]
cmp dword [rbx + 0x16f4], eax
mov r8d, dword [rbx + 0x88]
mov eax, dword [rbx + 0x9c]
mov dword [rbx + 0x88], 0
sete dl
sub eax, r8d
add r8d, dword [rbx + 0x94]
test edx, edx
mov dword [rbx + 0x9c], eax
mov dword [rbx + 0x94], r8d
je 0x46f1d8
movsxd rax, dword [rbx + 0x84]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x46f3df
add rax, qword [rbx + 0x50]
mov rdx, rax
xor r9d, r9d
mov rcx, rbx
call fcn.00476770
mov r13, qword [rbx]
mov eax, dword [rbx + 0x94]
mov r15, qword [r13 + 0x28]
mov dword [rbx + 0x84], eax
mov rcx, r15
call fcn.00476560
mov r14d, dword [r15 + 0x28]
cmp dword [r13 + 0x18], r14d
cmovbe r14d, dword [r13 + 0x18]
test r14d, r14d
jne 0x46f470
mov rax, qword [rbx]
mov r13d, dword [rax + 0x18]
test r13d, r13d
jne 0x46f10e
jmp 0x46e812
mov edx, dword [rbx + 0xac]
cmp edx, 1
jle 0x46e8db
cmp edx, 5
mov eax, 0x40
jle 0x46e8db
cmp edx, 6
mov eax, 0xc0
mov edx, pe_nt_image_headers64
cmove eax, edx
jmp 0x46e8db
mov rax, qword [rbx + 0x30]
jmp 0x46ebde
mov rcx, qword [r13 + 0x10]
mov rdx, qword [r15 + 0x20]
mov r9d, r14d
mov r8, r9
mov qword [rsp + 0x28], r9
call sub.msvcrt.dll_memcpy
mov r9, qword [rsp + 0x28]
add qword [r13 + 0x10], r9
add qword [r15 + 0x20], r9
add dword [r13 + 0x1c], r14d
sub dword [r13 + 0x18], r14d
sub dword [r15 + 0x28], r14d
jne 0x46f417
mov rax, qword [r15 + 0x10]
mov qword [r15 + 0x20], rax
jmp 0x46f417
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rbp + 0x20]
mov r12d, edi
mov r8, r12
call sub.msvcrt.dll_memcpy
add qword [rsi + 0x10], r12
add qword [rbp + 0x20], r12
add dword [rsi + 0x1c], edi
sub dword [rsi + 0x18], edi
sub dword [rbp + 0x28], edi
jne 0x46e60b
mov rax, qword [rbp + 0x10]
mov qword [rbp + 0x20], rax
jmp 0x46e60b
mov rcx, qword [rsi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rsi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rsi + 0x1c], ebp
sub dword [rsi + 0x18], ebp
sub dword [r12 + 0x28], ebp
jne 0x46ee0e
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
jmp 0x46ee0e
mov edx, r9d
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
call fcn.00478460
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x3c]
jmp 0x46edd8
mov rcx, rbx
call fcn.004765f0
jmp 0x46ea17
mov rcx, qword [rsi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rsi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rsi + 0x1c], ebp
sub dword [rsi + 0x18], ebp
sub dword [r12 + 0x28], ebp
jne 0x46ee75
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
jmp 0x46ee75
mov rcx, qword [rbp + 0x10]
mov rdx, qword [r13 + 0x20]
mov r14d, r12d
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [rbp + 0x10], r14
add qword [r13 + 0x20], r14
add dword [rbp + 0x1c], r12d
sub dword [rbp + 0x18], r12d
sub dword [r13 + 0x28], r12d
jne 0x46e683
mov rax, qword [r13 + 0x10]
mov qword [r13 + 0x20], rax
jmp 0x46e683
cmp edi, 4
mov dword [rbx + 0x1708], 0
je 0x46f8c4
mov ebp, dword [rbx + 0x16f4]
test ebp, ebp
je 0x46e9f0
movsxd rax, dword [rbx + 0x84]
mov r8d, dword [rbx + 0x94]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x46f616
add rax, qword [rbx + 0x50]
mov rdx, rax
xor r9d, r9d
mov rcx, rbx
call fcn.00476770
mov r12, qword [rbx]
mov eax, dword [rbx + 0x94]
mov r13, qword [r12 + 0x28]
mov dword [rbx + 0x84], eax
mov rcx, r13
call fcn.00476560
mov ebp, dword [r13 + 0x28]
cmp dword [r12 + 0x18], ebp
cmovbe ebp, dword [r12 + 0x18]
test ebp, ebp
je 0x46e7ea
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r13 + 0x20]
mov r14d, ebp
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [r12 + 0x10], r14
add qword [r13 + 0x20], r14
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
sub dword [r13 + 0x28], ebp
jne 0x46e7ea
mov rax, qword [r13 + 0x10]
mov qword [r13 + 0x20], rax
jmp 0x46e7ea
mov eax, 0xfffffffe
jmp 0x46e3bb
mov rax, qword [0x004bfa70]
mov rax, qword [rax + 0x20]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffe
jmp 0x46e3bb
mov rax, qword [rbx + 0x30]
jmp 0x46ecee
mov rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
mov r8d, dword [rbx + 0x28]
call fcn.00478460
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
jmp 0x46f0a4
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x3c]
jmp 0x46eddf
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov ecx, dword [rsi + 0x4c]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov edx, dword [rsi + 0x4c]
shr edx, 8
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
movzx ecx, word [rsi + 0x4e]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
movzx ecx, byte [rsi + 0x4f]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov ecx, dword [rsi + 0xc]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov edx, dword [rsi + 0xc]
shr edx, 8
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
movzx ecx, word [rsi + 0xe]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
movzx ecx, byte [rsi + 0xf]
mov byte [rdx + rax], cl
jmp 0x46e5ed
mov rcx, qword [rsi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
mov eax, dword [rsi + 0x18]
add qword [rsi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rsi + 0x1c], ebp
sub eax, ebp
mov dword [rsi + 0x18], eax
sub dword [r12 + 0x28], ebp
jne 0x46ea38
mov rdx, qword [r12 + 0x10]
mov qword [r12 + 0x20], rdx
jmp 0x46ea38
mov eax, 1
jmp 0x46e3bb
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov ecx, dword [rbx + 0xac]
lea edx, [rax + 1]
add rax, qword [rbx + 0x10]
cmp ecx, 9
mov dword [rbx + 0x28], edx
mov edx, 2
je 0x46f867
cmp dword [rbx + 0xb0], 1
jg 0x46fadc
xor edx, edx
cmp ecx, 1
jle 0x46fadc
mov byte [rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0xa
mov r12, qword [rsi + 0x28]
mov dword [rbx + 8], 0x71
mov rcx, r12
call fcn.00476560
mov ebp, dword [r12 + 0x28]
cmp dword [rsi + 0x18], ebp
cmovbe ebp, dword [rsi + 0x18]
test ebp, ebp
jne 0x46f9d6
mov r15d, dword [rbx + 0x28]
test r15d, r15d
jne 0x46e819
mov edx, dword [rbx + 8]
jmp 0x46e4c1
cmp ecx, 2
ja 0x46f30d
jmp 0x46f13e
movsxd rax, dword [rbx + 0x84]
mov r8d, dword [rbx + 0x94]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x46f8e2
add rax, qword [rbx + 0x50]
mov rdx, rax
mov r9d, 1
mov rcx, rbx
call fcn.00476770
mov rbp, qword [rbx]
mov eax, dword [rbx + 0x94]
mov r13, qword [rbp + 0x28]
mov dword [rbx + 0x84], eax
mov rcx, r13
call fcn.00476560
mov r12d, dword [r13 + 0x28]
cmp dword [rbp + 0x18], r12d
cmovbe r12d, dword [rbp + 0x18]
test r12d, r12d
jne 0x46fa13
mov rax, qword [rbx]
mov r15d, dword [rax + 0x18]
xor eax, eax
test r15d, r15d
je 0x46e803
mov eax, 1
jmp 0x46e803
movsxd rax, dword [rbx + 0x84]
mov r8d, dword [rbx + 0x94]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x46f95b
add rax, qword [rbx + 0x50]
mov rdx, rax
mov r9d, 1
mov rcx, rbx
call fcn.00476770
mov rbp, qword [rbx]
mov eax, dword [rbx + 0x94]
mov r12, qword [rbp + 0x28]
mov dword [rbx + 0x84], eax
mov rcx, r12
call fcn.00476560
mov r13d, dword [r12 + 0x28]
cmp dword [rbp + 0x18], r13d
cmovbe r13d, dword [rbp + 0x18]
test r13d, r13d
je 0x46f921
mov rcx, qword [rbp + 0x10]
mov rdx, qword [r12 + 0x20]
mov r14d, r13d
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [rbp + 0x10], r14
add qword [r12 + 0x20], r14
add dword [rbp + 0x1c], r13d
sub dword [rbp + 0x18], r13d
sub dword [r12 + 0x28], r13d
jne 0x46f921
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
jmp 0x46f921
mov rcx, qword [rsi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rsi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rsi + 0x1c], ebp
sub dword [rsi + 0x18], ebp
sub dword [r12 + 0x28], ebp
jne 0x46f8a1
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
jmp 0x46f8a1
mov rcx, qword [rbp + 0x10]
mov rdx, qword [r13 + 0x20]
mov r14d, r12d
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [rbp + 0x10], r14
add qword [r13 + 0x20], r14
add dword [rbp + 0x1c], r12d
sub dword [rbp + 0x18], r12d
sub dword [r13 + 0x28], r12d
jne 0x46f921
mov rax, qword [r13 + 0x10]
mov qword [r13 + 0x20], rax
jmp 0x46f921
mov rcx, qword [rbp + 0x10]
mov rdx, qword [r12 + 0x20]
mov r14d, r13d
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [rbp + 0x10], r14
add qword [r12 + 0x20], r14
add dword [rbp + 0x1c], r13d
sub dword [rbp + 0x18], r13d
sub dword [r12 + 0x28], r13d
jne 0x46e7ea
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
jmp 0x46e7ea
mov eax, dword [rbx + 0x74]
mov rcx, qword [rbx + 0x68]
xor r9d, r9d
xor edx, edx
lea r8d, [rax - 1]
mov word [rcx + r8*2], r9w
add r8, r8
call sub.msvcrt.dll_memset
mov r10d, dword [rbx + 0x9c]
test r10d, r10d
jne 0x46ea17
mov dword [rbx + 0x94], 0
mov dword [rbx + 0x84], 0
mov dword [rbx + 0x1708], 0
jmp 0x46ea17
mov edx, 4
jmp 0x46f867
add rcx, 4
jmp 0x46f2ee
add rcx, 3
jmp 0x46f2ee
add rcx, 2
jmp 0x46f2ee
add rcx, 7
jmp 0x46f2ee
add rcx, 6
jmp 0x46f2ee
add rcx, 5
jmp 0x46f2ee