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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov r13, qword [rcx]
mov rbp, qword [rcx + 8]
mov rsi, qword [rcx + 0x10]
cmp dword [rbp + 0x84], 0
mov qword [rsp + 0x40], r13
mov qword [rsp + 0x58], rcx
je 0x5072f0
mov r12, rcx
mov eax, dword [rbp + 0x64]
mov dword [rsp + 0x34], eax
mov rax, qword [rbp + 0x18]
test rax, rax
je 0x507c63
mov r14d, dword [rax]
jmp 0x507c66
mov qword [rsp + 0x50], rbp
test rbp, rbp
je 0x5085fb
mov r12, qword [rsp + 0x50]
jmp 0x50731e
mov r12, qword [r12 + 0x40]
test r12, r12
je 0x5085fb
mov r14, qword [r12 + 0x50]
mov rcx, qword [r14 + 0x38]
mov rbp, rcx
lea rax, [0x006043a0]
xor rbp, rax
cmp rcx, rax
sete dl
mov rax, rcx
lea rbx, [0x006043aa]
xor rax, rbx
cmp rcx, rbx
sete bl
xor bl, dl
or rax, rbp
sete al
test bl, bl
jne 0x5073c0
test al, al
jne 0x5073c0
lea rax, [0x006035d6]
cmp rcx, rax
sete dl
lea rax, [0x006035db]
cmp rcx, rax
sete al
test dl, al
jne 0x50737f
xor dl, al
je 0x507310
mov rax, qword [r12 + 0x70]
mov rax, qword [rax + 0x20]
mov rdx, r13
mov r13d, dword [rax]
mov r15d, dword [r12 + 0x64]
mov ebx, dword [rdx + 0x44]
lea ecx, [rbx - 1]
mov dword [rdx + 0x44], ecx
movzx eax, byte [rdx + 0x1f]
test al, al
je 0x5075a6
add al, 0xff
mov byte [rdx + 0x1f], al
movzx eax, al
mov edi, dword [rdx + rax*4 + 0xd8]
jmp 0x5075af
mov r15d, dword [r12 + 0x64]
mov ebp, dword [r13 + 0x44]
mov rcx, r13
lea r13d, [rbp - 1]
mov dword [rcx + 0x44], r13d
movzx eax, byte [rcx + 0x1f]
test al, al
je 0x5074b1
add al, 0xff
mov byte [rcx + 0x1f], al
movzx eax, al
mov edi, dword [rcx + rax*4 + 0xd8]
mov r9d, dword [r12 + 0x60]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x5074d2
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 0x4b
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
lea rax, [0x006043a0]
cmp qword [r14 + 0x38], rax
je 0x5074fb
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x507557
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
movabs rdx, 0x100000047
mov qword [rcx + rax*8], rdx
mov dword [rcx + rax*8 + 8], edi
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov r9d, dword [r12 + 0x68]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x50758d
jmp 0x5076ca
mov edi, dword [rcx + 0x38]
add edi, 1
mov dword [rcx + 0x38], edi
mov r9d, dword [r12 + 0x60]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jg 0x507407
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x4b
xor r8d, r8d
call fcn.0047df60
lea rax, [0x006043a0]
cmp qword [r14 + 0x38], rax
jne 0x50744a
mov rax, qword [rsp + 0x50]
mov r8d, dword [rax + 0x58]
mov r9d, dword [r12 + 0x7c]
add r9d, 1
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x50768f
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x5e
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], edi
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x5076a0
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x47
mov r8d, 1
mov r9d, edi
call fcn.0047df60
mov r9d, dword [r12 + 0x68]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jg 0x5076ca
mov dword [rsp + 0x20], edi
mov rcx, rsi
mov edx, 0x6a
mov r8d, edi
call fcn.0047df60
jmp 0x5076fb
mov edi, dword [rdx + 0x38]
add edi, 1
mov dword [rdx + 0x38], edi
mov rax, qword [rsp + 0x50]
mov r8d, dword [rax + 0x58]
cmp r13d, 2
mov dword [rsp + 0x34], ecx
jg 0x507624
mov r9d, dword [r12 + 0x60]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x507887
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 0x4b
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x5078b8
jmp 0x507950
mov eax, dword [r12 + 0x60]
mov r9d, dword [r12 + 0x7c]
add r9d, 2
movsxd rcx, dword [rsi + 0x90]
cmp dword [rsi + 0x94], ecx
jle 0x507920
lea edx, [rcx + 1]
mov dword [rsi + 0x90], edx
mov rdx, qword [rsi + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x5e
mov dword [rdx + rcx*8 + 4], r8d
mov dword [rdx + rcx*8 + 8], r9d
mov dword [rdx + rcx*8 + 0xc], eax
mov qword [rdx + rcx*8 + 0x10], 0
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x5078b8
jmp 0x507950
mov dword [rsp + 0x20], edi
mov rcx, rsi
mov edx, 0x5e
call fcn.0047df60
mov rcx, qword [rsp + 0x40]
mov edx, edi
mov r8d, 2
call fcn.00506ac0
mov r9d, dword [r12 + 0x68]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x50758d
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x6a
mov dword [rcx + rax*8 + 4], edi
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], edi
mov qword [rcx + rax*8 + 0x10], 0
mov r8d, dword [r12 + 0x68]
add r8d, 1
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x507780
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x36
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r13d
mov dword [rcx + rax*8 + 0xc], edi
mov qword [rcx + rax*8 + 0x10], 0
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
mov r13, qword [rsp + 0x40]
jg 0x5077a8
mov dword [rsp + 0x20], edi
mov rcx, rsi
mov edx, 0x1d
mov r8d, r15d
xor r9d, r9d
call fcn.0047df60
jmp 0x5077dd
mov dword [rsp + 0x20], edi
mov rcx, rsi
mov edx, 0x36
mov r9d, r13d
call fcn.0047df60
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
mov r13, qword [rsp + 0x40]
jle 0x507759
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x1d
mov dword [rcx + rax*8 + 4], r15d
mov dword [rcx + rax*8 + 8], 0
mov dword [rcx + rax*8 + 0xc], edi
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [r12 + 0x60]
mov r9d, dword [r12 + 0x7c]
movsxd rcx, dword [rsi + 0x90]
cmp dword [rsi + 0x94], ecx
jle 0x507830
lea edx, [rcx + 1]
mov dword [rsi + 0x90], edx
mov rdx, qword [rsi + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x5e
mov dword [rdx + rcx*8 + 4], r15d
mov dword [rdx + rcx*8 + 8], r9d
mov dword [rdx + rcx*8 + 0xc], eax
mov qword [rdx + rcx*8 + 0x10], 0
jmp 0x507844
mov dword [rsp + 0x20], eax
mov rcx, rsi
mov edx, 0x5e
mov r8d, r15d
call fcn.0047df60
mov rcx, qword [rsi + 0x18]
neg ebp
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x50786f
mov eax, dword [rsi + 0x90]
mov rcx, qword [rcx + 0x50]
movsxd rdx, ebp
mov dword [rcx + rdx*4], eax
test edi, edi
jne 0x507c40
jmp 0x507310
mov rdx, rsi
mov r8d, ebp
call fcn.004d3e00
test edi, edi
jne 0x507c40
jmp 0x507310
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x4b
mov ebp, r8d
xor r8d, r8d
call fcn.0047df60
mov r8d, ebp
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jg 0x507950
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x87
mov ebp, r8d
mov r9d, edi
call fcn.0047df60
mov r8d, ebp
mov rax, qword [r14 + 0x38]
cmp r13d, 1
jle 0x507993
mov ebp, r15d
xor r15d, r15d
lea rcx, [0x006035d6]
cmp rax, rcx
sete al
mov r13, qword [rsp + 0x40]
movzx ecx, byte [r13 + 0x1f]
test cl, cl
je 0x507a1a
add cl, 0xff
mov byte [r13 + 0x1f], cl
movzx ecx, cl
mov r13d, dword [r13 + rcx*4 + 0xd8]
jmp 0x507a29
mov dword [rsp + 0x20], eax
mov rcx, rsi
mov edx, 0x5e
mov ebp, r15d
mov r15d, r8d
call fcn.0047df60
mov r8d, r15d
mov r15d, ebp
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x5078b8
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x87
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], edi
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov rax, qword [r14 + 0x38]
cmp r13d, 1
jg 0x5078e4
xor ecx, ecx
lea rdx, [0x006035d6]
cmp rax, rdx
sete cl
lea r9d, [rcx + rcx]
add r9d, 0xffffffff
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x5079f8
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x56
mov dword [rcx + rax*8 + 4], edi
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov r9d, dword [rsp + 0x34]
jmp 0x507b40
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x56
mov r8d, edi
call fcn.0047df60
mov r9d, dword [rsp + 0x34]
jmp 0x507b40
mov rcx, r13
mov r13d, dword [r13 + 0x38]
add r13d, 1
mov dword [rcx + 0x38], r13d
mov r15b, al
mov r9d, dword [r12 + 0x7c]
add r9d, 1
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x507ab1
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x5e
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], r13d
mov qword [rcx + rax*8 + 0x10], 0
xor r15d, 0x6b
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jg 0x507ad6
mov dword [rsp + 0x20], edi
mov rcx, rsi
mov edx, r15d
mov r8d, r13d
mov r9d, edi
call fcn.0047df60
mov r9d, dword [rsp + 0x34]
test r13d, r13d
mov r15d, ebp
jne 0x507b1d
jmp 0x507b40
mov dword [rsp + 0x20], r13d
mov rcx, rsi
mov edx, 0x5e
call fcn.0047df60
xor r15d, 0x6b
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x507a8a
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], r15b
mov word [rcx + rax*8 + 2], 0
mov dword [rcx + rax*8 + 4], r13d
mov dword [rcx + rax*8 + 8], edi
mov dword [rcx + rax*8 + 0xc], edi
mov qword [rcx + rax*8 + 0x10], 0
mov byte [rcx + rax*8 + 1], 0
mov r9d, dword [rsp + 0x34]
test r13d, r13d
mov r15d, ebp
je 0x507b40
mov rax, qword [rsp + 0x40]
movzx eax, byte [rax + 0x1f]
cmp rax, 7
ja 0x507b40
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x40]
mov byte [rdx + 0x1f], cl
mov dword [rdx + rax*4 + 0xd8], r13d
nop
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x507b83
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x1d
mov dword [rcx + rax*8 + 4], r15d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], edi
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x507b97
mov dword [rsp + 0x20], edi
mov rcx, rsi
mov edx, 0x1d
mov r8d, r15d
call fcn.0047df60
mov r13, qword [rsp + 0x40]
mov eax, dword [r12 + 0x60]
mov r9d, dword [r12 + 0x7c]
movsxd rcx, dword [rsi + 0x90]
cmp dword [rsi + 0x94], ecx
jle 0x507be9
lea edx, [rcx + 1]
mov dword [rsi + 0x90], edx
mov rdx, qword [rsi + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x5e
mov dword [rdx + rcx*8 + 4], r15d
mov dword [rdx + rcx*8 + 8], r9d
mov dword [rdx + rcx*8 + 0xc], eax
mov qword [rdx + rcx*8 + 0x10], 0
jmp 0x507bfd
mov dword [rsp + 0x20], eax
mov rcx, rsi
mov edx, 0x5e
mov r8d, r15d
call fcn.0047df60
mov rcx, qword [rsi + 0x18]
neg ebx
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x507c24
mov eax, dword [rsi + 0x90]
mov rcx, qword [rcx + 0x50]
movsxd rdx, ebx
mov dword [rcx + rdx*4], eax
test edi, edi
jne 0x507c40
jmp 0x507310
mov rdx, rsi
mov r8d, ebx
call fcn.004d3e00
test edi, edi
je 0x507310
nop word [rax + rax]
movzx eax, byte [r13 + 0x1f]
cmp rax, 7
ja 0x507310
lea ecx, [rax + 1]
mov byte [r13 + 0x1f], cl
mov dword [r13 + rax*4 + 0xd8], edi
jmp 0x507310
xor r14d, r14d
mov r10d, dword [r13 + 0x44]
lea r15d, [r10 - 2]
mov dword [r13 + 0x44], r15d
mov al, byte [r13 + 0x1f]
test al, al
je 0x507cb3
lea ecx, [rax - 1]
mov byte [r13 + 0x1f], cl
movzx ecx, cl
mov r9d, dword [r13 + rcx*4 + 0xd8]
test cl, cl
je 0x507cc3
add al, 0xfe
mov byte [r13 + 0x1f], al
movzx ecx, al
mov ecx, dword [r13 + rcx*4 + 0xd8]
mov dword [rsp + 0x4c], ecx
test r14d, r14d
jne 0x507cd9
xor edi, edi
xor ebx, ebx
jmp 0x507d86
mov ecx, dword [r13 + 0x38]
add ecx, 1
mov dword [r13 + 0x38], ecx
mov r9d, ecx
jmp 0x507cc7
mov ecx, dword [r13 + 0x38]
add ecx, 1
mov dword [r13 + 0x38], ecx
xor eax, eax
mov dword [rsp + 0x4c], ecx
test r14d, r14d
je 0x507caa
cmp r14d, 1
jne 0x507d10
test al, al
je 0x507d6c
lea ecx, [rax - 1]
mov byte [r13 + 0x1f], cl
movzx ecx, cl
mov ebx, dword [r13 + rcx*4 + 0xd8]
test cl, cl
je 0x507d7b
add al, 0xfe
mov byte [r13 + 0x1f], al
movzx eax, al
mov edi, dword [r13 + rax*4 + 0xd8]
jmp 0x507d86
mov ecx, dword [r13 + 0x28]
mov ebx, dword [r13 + 0x2c]
mov eax, ecx
sub eax, r14d
jge 0x507d47
mov eax, dword [r13 + 0x38]
mov rdx, r14
mov edi, ebx
lea ebx, [rax + 1]
add eax, edx
mov dword [r13 + 0x38], eax
mov eax, ecx
sub eax, edx
jl 0x507d5a
mov r14, rdx
lea ecx, [rdi + rdx]
mov dword [r13 + 0x2c], ecx
mov dword [r13 + 0x28], eax
jmp 0x507d86
mov rdx, r14
lea edi, [rbx + r14]
mov dword [r13 + 0x2c], edi
mov dword [r13 + 0x28], eax
sub eax, edx
jge 0x507d37
mov eax, dword [r13 + 0x38]
lea edi, [rax + 1]
mov r14, rdx
add eax, edx
mov dword [r13 + 0x38], eax
jmp 0x507d86
mov edi, dword [r13 + 0x38]
add edi, 1
mov dword [r13 + 0x38], edi
mov ebx, edi
jmp 0x507d7f
mov edi, dword [r13 + 0x38]
add edi, 1
mov dword [r13 + 0x38], edi
mov qword [rsp + 0x68], rdi
mov r8d, dword [rbp + 0x58]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
mov dword [rsp + 0x38], r9d
jle 0x507ddb
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x87
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x507df6
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x87
mov rdi, r10
call fcn.0047df60
mov r10, rdi
mov rdi, r14
mov r14d, dword [rsp + 0x4c]
mov qword [rsp + 0x80], r10
lea eax, [r10 - 1]
mov dword [rsp + 0x3c], eax
mov edx, dword [rbp + 0x58]
mov rcx, r12
mov qword [rsp + 0x70], rbx
mov r8d, ebx
call fcn.00509c50
mov rbx, rbp
jmp 0x507e6b
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 0x4b
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov rbx, qword [rbx + 0x40]
test rbx, rbx
je 0x507e9f
mov r9d, dword [rbx + 0x5c]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jg 0x507e30
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x4b
xor r8d, r8d
call fcn.0047df60
mov rbx, qword [rbx + 0x40]
test rbx, rbx
jne 0x507e6b
mov eax, dword [rbp + 0x84]
movsxd rcx, dword [rsi + 0x90]
cmp dword [rsi + 0x94], ecx
jle 0x507eeb
lea edx, [rcx + 1]
mov dword [rsi + 0x90], edx
mov rdx, qword [rsi + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x16
mov ebx, dword [rsp + 0x34]
mov dword [rdx + rcx*8 + 4], ebx
mov dword [rdx + rcx*8 + 8], r15d
mov dword [rdx + rcx*8 + 0xc], eax
mov qword [rdx + rcx*8 + 0x10], 0
jmp 0x507f04
mov dword [rsp + 0x20], eax
mov rcx, rsi
mov edx, 0x16
mov r8d, dword [rsp + 0x34]
mov r9d, r15d
call fcn.0047df60
mov ebx, dword [rsp + 0x38]
mov eax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
mov qword [rsp + 0x78], rax
jle 0x507f8d
cdqe
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x87
mov edx, dword [rsp + 0x34]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r14d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov r8d, dword [rbp + 0x88]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jg 0x507fc0
mov dword [rsp + 0x20], r14d
mov rcx, rsi
mov edx, 0x36
mov r9d, r15d
call fcn.0047df60
mov al, byte [rbp + 0x24]
cmp al, 0x42
jne 0x507ffe
jmp 0x5083f1
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x87
mov r8d, dword [rsp + 0x34]
mov r9d, r14d
call fcn.0047df60
mov r8d, dword [rbp + 0x88]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x507f6c
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x36
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r15d
mov dword [rcx + rax*8 + 0xc], r14d
mov qword [rcx + rax*8 + 0x10], 0
mov al, byte [rbp + 0x24]
cmp al, 0x42
je 0x5083f1
cmp al, 0x55
jne 0x50804f
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x508138
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x35
mov dword [rcx + rax*8 + 4], ebx
mov edx, dword [rsp + 0x3c]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], r14d
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x5083f1
mov qword [rsp + 0x50], rbp
mov rbp, qword [rbp + 0x18]
xor r15d, r15d
test rbp, rbp
je 0x508157
mov qword [rsp + 0x60], rdi
mov r15d, dword [rbp]
mov rdi, qword [r13]
lea r12d, [r15 + 1]
lea eax, [r12 + r12*8]
add eax, 0xfffffff8
movsxd r13, eax
movabs rax, 0x8d89571b07e3e0f9
mov rcx, r13
sub rcx, rax
lea rdx, [rcx + rax]
add rdx, 0x28
mov rcx, rdi
call fcn.00429840
test rax, rax
je 0x508167
mov rbx, rax
movsxd rax, r12d
lea rax, [rbx + rax*8]
add rax, 0x20
mov qword [rbx + 0x18], rax
mov word [rbx + 6], r15w
mov word [rbx + 8], r12w
mov al, byte [rdi + 0x64]
mov byte [rbx + 4], al
mov qword [rbx + 0x10], rdi
mov dword [rbx], 1
mov rcx, rbx
add rcx, 0x28
xor edx, edx
mov r8, r13
call fcn.005f4c10
test r15d, r15d
jle 0x508179
add rbp, 8
xor edi, edi
mov r12, qword [rsp + 0x58]
mov r13, qword [rsp + 0x40]
jmp 0x50811d
mov qword [rbx + rdi*8 + 0x20], rax
movzx eax, byte [rbp + 0x10]
mov rcx, qword [rbx + 0x18]
mov byte [rcx + rdi], al
add rdi, 1
add rbp, 0x20
cmp r15, rdi
je 0x508183
mov rdx, qword [rbp]
mov rcx, r13
call fcn.0047fd40
test rax, rax
jne 0x508100
mov rax, qword [r13]
mov rax, qword [rax + 0x10]
jmp 0x508100
mov dword [rsp + 0x20], r14d
mov rcx, rsi
mov edx, 0x35
mov r8d, ebx
mov r9d, dword [rsp + 0x3c]
call fcn.0047df60
jmp 0x5083f1
xor ebx, ebx
mov rbp, qword [rsp + 0x50]
cmp al, 0x5e
je 0x508197
jmp 0x508202
cmp byte [rdi + 0x67], 0
jne 0x508177
cmp byte [rdi + 0x68], 0
je 0x508679
xor ebx, ebx
mov r12, qword [rsp + 0x58]
mov r13, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x60]
xor r15d, r15d
mov al, byte [rbp + 0x24]
cmp al, 0x5e
jne 0x508202
mov r15d, dword [rsi + 0x90]
cmp dword [rsi + 0x94], r15d
jle 0x5081e5
movsxd rax, r15d
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x35
mov edx, dword [rsp + 0x38]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], 0
mov dword [rcx + rax*8 + 0xc], r14d
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x508202
mov dword [rsp + 0x20], r14d
mov rcx, rsi
mov edx, 0x35
mov r8d, dword [rsp + 0x38]
xor r9d, r9d
call fcn.0047df60
mov r15d, eax
test rbx, rbx
je 0x508291
mov r14, rdi
mov rcx, r12
mov edx, dword [rsp + 0x34]
mov rdi, qword [rsp + 0x68]
mov r8d, edi
call fcn.00509c50
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x5082de
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x5a
mov dword [rcx + rax*8 + 4], edi
mov rdx, qword [rsp + 0x70]
mov dword [rcx + rax*8 + 8], edx
mov rdi, r14
mov dword [rcx + rax*8 + 0xc], edi
mov qword [rcx + rax*8 + 0x10], 0
mov rcx, qword [rsi]
cmp byte [rcx + 0x67], 0
mov r14d, dword [rsp + 0x4c]
je 0x50830d
mov edx, 0xfffffff8
mov r8, rbx
call fcn.00444fc0
jmp 0x50832e
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x508394
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov edx, dword [rsp + 0x3c]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x5083b1
mov dword [rsp + 0x20], r14d
mov rcx, rsi
mov edx, 0x5a
mov r8d, edi
mov rdi, r14
mov r9, qword [rsp + 0x70]
call fcn.0047df60
mov rcx, qword [rsi]
cmp byte [rcx + 0x67], 0
mov r14d, dword [rsp + 0x4c]
jne 0x50827f
mov rax, qword [rsi + 0x88]
mov ecx, dword [rsi + 0x90]
add ecx, 0xffffffff
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
mov byte [rax + rcx*8 + 1], 0xf8
mov qword [rax + rcx*8 + 0x10], rbx
mov ebx, dword [rsp + 0x38]
movsxd rax, dword [rsi + 0x90]
lea r8d, [rax + 1]
cmp dword [rsi + 0x94], eax
jle 0x50837b
mov dword [rsi + 0x90], r8d
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0xd
mov dword [rcx + rax*8 + 4], r8d
mov edx, dword [rsp + 0x3c]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], r8d
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x5083b5
mov dword [rsp + 0x20], r8d
mov rcx, rsi
mov edx, 0xd
mov r9d, dword [rsp + 0x3c]
call fcn.0047df60
jmp 0x5083b5
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 8
xor r8d, r8d
mov r9d, dword [rsp + 0x3c]
call fcn.0047df60
mov ebx, dword [rsp + 0x38]
test r15d, r15d
je 0x5083f1
mov eax, dword [rsi + 0x90]
mov rcx, qword [rsi]
cmp byte [rcx + 0x67], 0
je 0x5083d2
lea rcx, [0x0213b3e8]
jmp 0x5083ee
lea ecx, [rax - 1]
test r15d, r15d
cmovns ecx, r15d
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [rsi + 0x88]
mov dword [rcx + 8], eax
mov eax, dword [r12 + 0x20]
mov rcx, qword [r12]
mov dword [rsp + 0x20], eax
mov rdx, rbp
mov r8d, dword [rsp + 0x34]
xor r9d, r9d
call fcn.00509d20
mov rcx, qword [rsi + 0x18]
mov r8, qword [rsp + 0x80]
neg r8d
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x5084b6
mov eax, dword [rsi + 0x90]
mov rcx, qword [rcx + 0x50]
movsxd rdx, r8d
mov dword [rcx + rdx*4], eax
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x5084d1
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x26
mov edx, dword [rsp + 0x34]
mov dword [rcx + rax*8 + 4], edx
mov rbp, qword [rsp + 0x78]
mov dword [rcx + rax*8 + 8], ebp
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [rsi + 0x90]
mov rcx, qword [rsi]
cmp byte [rcx + 0x67], 0
je 0x508502
mov dword [0x0213b3f0], eax
lea rcx, [0x0213b3e8]
mov dword [rcx + 8], eax
test r14d, r14d
jne 0x508548
jmp 0x508562
mov rdx, rsi
call fcn.004d3e00
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jg 0x50844c
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 0x26
mov r8d, dword [rsp + 0x34]
mov rbp, qword [rsp + 0x78]
mov r9d, ebp
call fcn.0047df60
mov eax, dword [rsi + 0x90]
mov rcx, qword [rsi]
cmp byte [rcx + 0x67], 0
jne 0x508498
test ebp, ebp
mov ecx, ebp
cmovle ecx, eax
add ecx, 0xffffffff
mov rdx, qword [rsi + 0x88]
movsxd rcx, ecx
lea r8, [rcx + rcx*2]
mov rcx, rdi
lea edi, [rbp + 1]
cmp ebp, 0xffffffff
lea ebx, [rax - 1]
cmovge ebx, edi
mov rdi, rcx
mov dword [rdx + r8*8 + 8], eax
movsxd rcx, ebx
mov ebx, dword [rsp + 0x38]
lea rcx, [rcx + rcx*2]
lea rcx, [rdx + rcx*8]
mov dword [rcx + 8], eax
test r14d, r14d
je 0x508562
movzx eax, byte [r13 + 0x1f]
cmp rax, 7
ja 0x508562
lea ecx, [rax + 1]
mov byte [r13 + 0x1f], cl
mov dword [r13 + rax*4 + 0xd8], r14d
test ebx, ebx
je 0x508580
movzx eax, byte [r13 + 0x1f]
cmp rax, 7
ja 0x508580
lea ecx, [rax + 1]
mov byte [r13 + 0x1f], cl
mov dword [r13 + rax*4 + 0xd8], ebx
test edi, edi
mov rdx, qword [rsp + 0x70]
je 0x5085e7
cmp edi, 1
jne 0x5085d4
cmp dword [rsp + 0x68], 0
je 0x5085b4
movzx eax, byte [r13 + 0x1f]
cmp rax, 7
ja 0x5085b4
lea ecx, [rax + 1]
mov byte [r13 + 0x1f], cl
mov rcx, qword [rsp + 0x68]
mov dword [r13 + rax*4 + 0xd8], ecx
test edx, edx
je 0x5085e7
movzx eax, byte [r13 + 0x1f]
cmp rax, 7
ja 0x5085e7
lea ecx, [rax + 1]
mov byte [r13 + 0x1f], cl
mov dword [r13 + rax*4 + 0xd8], edx
jmp 0x5085e7
cmp dword [r13 + 0x28], edi
jge 0x5085e7
mov dword [r13 + 0x28], edi
mov rax, qword [rsp + 0x68]
mov dword [r13 + 0x2c], eax
mov rcx, qword [r12]
mov rdx, qword [r12 + 8]
mov r8d, 1
call fcn.00506e30
mov rax, qword [rsp + 0x58]
mov r9d, dword [rax + 0x18]
mov r8d, dword [rax + 0x1c]
movsxd rax, dword [rsi + 0x90]
cmp dword [rsi + 0x94], eax
jle 0x50864f
lea ecx, [rax + 1]
mov dword [rsi + 0x90], ecx
mov rcx, qword [rsi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 9
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x508664
mov dword [rsp + 0x20], 0
mov rcx, rsi
mov edx, 9
call fcn.0047df60
nop
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov byte [rdi + 0x67], 1
cmp dword [rdi + 0xe4], 0
jle 0x508690
mov dword [rdi + 0x198], 1
add dword [rdi + 0x1a0], 1
mov word [rdi + 0x1a4], 0
mov rcx, qword [rdi + 0x160]
test rcx, rcx
mov r12, qword [rsp + 0x58]
mov r13, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x50]
mov r14, qword [rsp + 0x60]
mov r15d, 0
je 0x5086e0
lea rdx, [0x005fc480]
call fcn.00419aa0
mov rax, qword [rdi + 0x160]
mov dword [rax + 0x18], 7
xor ebx, ebx
mov rdi, r14
mov r14d, dword [rsp + 0x4c]
mov al, byte [rbp + 0x24]
cmp al, 0x5e
je 0x508197
jmp 0x508202