Function at 0x402974
Capabilities:
Encrypt data using speck

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x300
mov qword [rbp + 0x10], rcx
mov qword [rbp + 0x18], rdx
mov qword [rbp + 0x20], r8
mov qword [rbp + 0x28], r9
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x18]
mov qword [rbp - 0x28], rax
mov rax, qword [rbp + 0x20]
mov rcx, qword [rax]
mov rax, qword [rbp + 0x18]
add rax, rcx
mov qword [rbp - 0x30], rax
mov rax, qword [rbp + 0x30]
mov qword [rbp - 0x38], rax
mov rax, qword [rbp + 0x38]
mov rcx, qword [rax]
mov rax, qword [rbp + 0x30]
add rax, rcx
mov qword [rbp - 0x40], rax
mov eax, dword [rbp + 0x40]
and eax, 4
cmp eax, 0
je 0x4029d4
jmp 0x4029f2
mov rax, qword [rbp + 0x30]
mov rcx, qword [rbp + 0x28]
sub rax, rcx
mov rcx, qword [rbp + 0x38]
mov rdx, qword [rcx]
add rax, rdx
sub rax, 1
jmp 0x4029fc
movabs rax, 0xffffffffffffffff
mov qword [rbp - 0x48], rax
mov rax, qword [rbp - 0x48]
add rax, 1
mov rcx, qword [rbp - 0x48]
and rax, rcx
cmp rax, 0
jne 0x402a2f
mov rax, qword [rbp + 0x30]
mov rcx, qword [rbp + 0x28]
cmp rax, rcx
jb 0x402a2f
jmp 0x402a51
mov rax, qword [rbp + 0x20]
mov rcx, qword [rbp + 0x38]
movabs rdx, 0
mov qword [rcx], rdx
mov qword [rax], rdx
mov eax, 0xfffffffd
jmp 0x405fbe
mov rax, qword [rbp + 0x10]
add rax, 4
mov ecx, dword [rax]
mov dword [rbp - 8], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x38
mov rcx, qword [rax]
mov qword [rbp - 0x20], rcx
mov rax, qword [rbp + 0x10]
add rax, 0x20
mov ecx, dword [rax]
mov dword [rbp - 0xc], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x24
mov ecx, dword [rax]
mov dword [rbp - 0x10], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x28
mov ecx, dword [rax]
mov dword [rbp - 0x14], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x40
mov rcx, qword [rax]
mov qword [rbp - 0x50], rcx
mov rax, qword [rbp + 0x10]
jmp 0x405a45
mov rax, qword [rbp + 0x10]
add rax, 8
mov rcx, qword [rbp + 0x10]
add rcx, 0xc
mov edx, 0
mov dword [rcx], edx
mov dword [rax], edx
mov dword [rbp - 0x14], edx
mov dword [rbp - 0x10], edx
mov dword [rbp - 0xc], edx
mov dword [rbp - 8], edx
mov qword [rbp - 0x20], rdx
mov rax, qword [rbp + 0x10]
add rax, 0x10
mov rcx, qword [rbp + 0x10]
add rcx, 0x1c
mov edx, 1
mov dword [rcx], edx
mov dword [rax], edx
mov eax, dword [rbp + 0x40]
and eax, 1
cmp eax, 0
je 0x402d55
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x402b87
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x402b6c
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 1
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x402b67
mov rax, qword [rbp + 0x10]
add rax, 8
mov rcx, qword [rbp - 0x28]
mov rdx, rcx
add rcx, 1
mov qword [rbp - 0x28], rcx
movzx ecx, byte [rdx]
mov dword [rax], ecx
jmp 0x402b82
jmp 0x402b80
mov rax, qword [rbp + 0x10]
add rax, 8
mov ecx, 0
mov dword [rax], ecx
jmp 0x402b82
jmp 0x402b0e
jmp 0x402ba3
mov rax, qword [rbp + 0x10]
add rax, 8
mov rcx, qword [rbp - 0x28]
mov rdx, rcx
add rcx, 1
mov qword [rbp - 0x28], rcx
movzx ecx, byte [rdx]
mov dword [rax], ecx
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x402c2d
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x402c12
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 2
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x402c0d
mov rax, qword [rbp + 0x10]
add rax, 0xc
mov rcx, qword [rbp - 0x28]
mov rdx, rcx
add rcx, 1
mov qword [rbp - 0x28], rcx
movzx ecx, byte [rdx]
mov dword [rax], ecx
jmp 0x402c28
jmp 0x402c26
mov rax, qword [rbp + 0x10]
add rax, 0xc
mov ecx, 0
mov dword [rax], ecx
jmp 0x402c28
jmp 0x402bb4
jmp 0x402c49
mov rax, qword [rbp + 0x10]
add rax, 0xc
mov rcx, qword [rbp - 0x28]
mov rdx, rcx
add rcx, 1
mov qword [rbp - 0x28], rcx
movzx ecx, byte [rdx]
mov dword [rax], ecx
mov rax, qword [rbp + 0x10]
add rax, 8
mov ecx, dword [rax]
shl ecx, 8
mov rax, qword [rbp + 0x10]
add rax, 0xc
mov edx, dword [rax]
add ecx, edx
mov rax, rcx
mov ecx, 0x1f
xor edx, edx
div ecx
cmp edx, 0
jne 0x402caa
mov rax, qword [rbp + 0x10]
add rax, 0xc
mov ecx, dword [rax]
and ecx, 0x20
cmp ecx, 0
jne 0x402caa
mov rax, qword [rbp + 0x10]
add rax, 8
mov ecx, dword [rax]
and ecx, 0xf
cmp ecx, 8
jne 0x402caa
mov eax, 0
jmp 0x402caf
mov eax, 1
mov dword [rbp - 0x10], eax
mov eax, dword [rbp + 0x40]
and eax, 4
cmp eax, 0
je 0x402cc6
jmp 0x402d2f
mov rax, qword [rbp + 0x10]
add rax, 8
mov ecx, dword [rax]
shr ecx, 4
add ecx, 8
mov eax, 1
shl eax, cl
cmp eax, 0x8000
ja 0x402d22
mov rax, qword [rbp - 0x48]
add rax, 1
mov rcx, qword [rbp + 0x10]
add rcx, 8
mov edx, dword [rcx]
shr edx, 4
add edx, 8
mov ecx, 1
mov qword [rbp - 0x58], rcx
mov rcx, rdx
mov edx, dword [rbp - 0x58]
shl edx, cl
cmp rax, rdx
jb 0x402d22
mov eax, 0
jmp 0x402d27
mov eax, 1
mov ecx, dword [rbp - 0x10]
or ecx, eax
mov dword [rbp - 0x10], ecx
mov eax, dword [rbp - 0x10]
cmp eax, 0
je 0x402d55
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x24
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x402d3b
mov eax, dword [rbp - 8]
cmp eax, 3
jae 0x402e1b
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x402ddd
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x402dc9
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 3
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x402dc4
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x5c], eax
jmp 0x402dd8
jmp 0x402dd6
mov eax, 0
mov dword [rbp - 0x5c], eax
jmp 0x402dd8
jmp 0x402d72
jmp 0x402df2
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x5c], eax
mov eax, dword [rbp - 0x5c]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
cmp eax, 3
jb 0x402d61
mov rax, qword [rbp + 0x10]
add rax, 0x14
mov rcx, qword [rbp - 0x20]
and rcx, 7
mov dword [rax], ecx
mov rax, qword [rbp - 0x20]
shr rax, 3
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
sub eax, 3
mov dword [rbp - 8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x18
mov rcx, qword [rbp + 0x10]
add rcx, 0x14
mov edx, dword [rcx]
shr edx, 1
mov dword [rax], edx
mov rax, qword [rbp + 0x10]
add rax, 0x18
mov ecx, dword [rax]
cmp ecx, 0
jne 0x4034e9
mov eax, dword [rbp - 8]
and eax, 7
mov ecx, dword [rbp - 8]
cmp ecx, eax
jae 0x402f3c
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x402ef9
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x402ee5
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 5
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x402ee0
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x60], eax
jmp 0x402ef4
jmp 0x402ef2
mov eax, 0
mov dword [rbp - 0x60], eax
jmp 0x402ef4
jmp 0x402e8e
jmp 0x402f0e
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x60], eax
mov eax, dword [rbp - 0x60]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
and eax, 7
mov ecx, dword [rbp - 8]
cmp ecx, eax
jb 0x402e7d
mov eax, dword [rbp - 8]
and eax, 7
mov rcx, qword [rbp - 0x20]
mov qword [rbp - 0x68], rcx
mov rcx, rax
mov rax, qword [rbp - 0x68]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
and eax, 7
mov ecx, dword [rbp - 8]
sub ecx, eax
mov dword [rbp - 8], ecx
mov eax, 0
mov dword [rbp - 0x10], eax
mov eax, dword [rbp - 0x10]
cmp eax, 4
jae 0x403164
jmp 0x402f8a
mov eax, dword [rbp - 0x10]
add eax, 1
mov dword [rbp - 0x10], eax
jmp 0x402f6e
mov eax, dword [rbp - 8]
cmp eax, 0
je 0x40309b
mov eax, dword [rbp - 8]
cmp eax, 8
jae 0x40305c
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x40301e
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x40300a
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 6
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x403005
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x6c], eax
jmp 0x403019
jmp 0x403017
mov eax, 0
mov dword [rbp - 0x6c], eax
jmp 0x403019
jmp 0x402fb3
jmp 0x403033
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x6c], eax
mov eax, dword [rbp - 0x6c]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
cmp eax, 8
jb 0x402fa2
mov rax, qword [rbp + 0x10]
add rax, 0x2928
mov ecx, dword [rbp - 0x10]
add rax, rcx
mov rcx, qword [rbp - 0x20]
and rcx, 0xff
and rcx, 0xff
mov byte [rax], cl
mov rax, qword [rbp - 0x20]
shr rax, 8
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
sub eax, 8
mov dword [rbp - 8], eax
jmp 0x40315f
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x40313a
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x403113
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 7
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x40310e
mov rax, qword [rbp + 0x10]
add rax, 0x2928
mov ecx, dword [rbp - 0x10]
add rax, rcx
mov rcx, qword [rbp - 0x28]
mov rdx, rcx
add rcx, 1
mov qword [rbp - 0x28], rcx
movzx ecx, byte [rdx]
mov byte [rax], cl
jmp 0x403135
jmp 0x403130
mov rax, qword [rbp + 0x10]
add rax, 0x2928
mov ecx, dword [rbp - 0x10]
add rax, rcx
mov ecx, 0
mov byte [rax], cl
jmp 0x403135
jmp 0x4030ac
jmp 0x40315f
mov rax, qword [rbp + 0x10]
add rax, 0x2928
mov ecx, dword [rbp - 0x10]
add rax, rcx
mov rcx, qword [rbp - 0x28]
mov rdx, rcx
add rcx, 1
mov qword [rbp - 0x28], rcx
movzx ecx, byte [rdx]
mov byte [rax], cl
jmp 0x402f7f
mov rax, qword [rbp + 0x10]
add rax, 0x2928
mov rcx, qword [rbp + 0x10]
add rcx, 0x2928
add rcx, 1
movzx edx, byte [rcx]
shl edx, 8
movzx ecx, byte [rax]
or ecx, edx
mov dword [rbp - 0x10], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x2928
add rax, 2
mov rdx, qword [rbp + 0x10]
add rdx, 0x2928
add rdx, 3
mov qword [rbp - 0x78], rcx
movzx ecx, byte [rdx]
shl ecx, 8
movzx edx, byte [rax]
or edx, ecx
xor edx, 0xffff
mov eax, dword [rbp - 0x78]
cmp eax, edx
je 0x4031e4
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x27
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x4031ca
mov eax, dword [rbp - 0x10]
cmp eax, 0
je 0x40333b
mov eax, dword [rbp - 8]
cmp eax, 0
je 0x40333b
mov eax, dword [rbp - 8]
cmp eax, 8
jae 0x4032c2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x403284
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x403270
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x33
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x40326b
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x7c], eax
jmp 0x40327f
jmp 0x40327d
mov eax, 0
mov dword [rbp - 0x7c], eax
jmp 0x40327f
jmp 0x403219
jmp 0x403299
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x7c], eax
mov eax, dword [rbp - 0x7c]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
cmp eax, 8
jb 0x403208
mov rax, qword [rbp - 0x20]
and rax, 0xff
mov dword [rbp - 0xc], eax
mov rax, qword [rbp - 0x20]
shr rax, 8
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
sub eax, 8
mov dword [rbp - 8], eax
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x40]
cmp rax, rcx
jb 0x403310
mov eax, 2
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x34
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x4032e5
mov rax, qword [rbp - 0x38]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x38], rax
mov eax, dword [rbp - 0xc]
and eax, 0xff
mov byte [rcx], al
mov eax, dword [rbp - 0x10]
mov rcx, rax
add eax, 0xffffffff
mov dword [rbp - 0x10], eax
jmp 0x4031e4
mov eax, dword [rbp - 0x10]
cmp eax, 0
je 0x4034e4
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x40]
cmp rax, rcx
jb 0x403372
mov eax, 2
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 9
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x403347
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x4033cb
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x4033af
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x26
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x4033c9
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x28
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x4033af
jmp 0x403372
mov rax, qword [rbp - 0x40]
mov rcx, qword [rbp - 0x38]
sub rax, rcx
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rbp - 0x28]
sub rcx, rdx
cmp rax, rcx
mov eax, 0
setb al
cmp eax, 0
je 0x403405
mov rax, qword [rbp - 0x40]
mov rcx, qword [rbp - 0x38]
sub rax, rcx
jmp 0x403415
mov rax, qword [rbp - 0x30]
mov rcx, qword [rbp - 0x28]
sub rax, rcx
jmp 0x403415
mov ecx, dword [rbp - 0x10]
cmp rax, rcx
mov eax, 0
setb al
cmp eax, 0
je 0x40347b
mov rax, qword [rbp - 0x40]
mov rcx, qword [rbp - 0x38]
sub rax, rcx
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rbp - 0x28]
sub rcx, rdx
cmp rax, rcx
mov eax, 0
setb al
cmp eax, 0
je 0x403466
mov rax, qword [rbp - 0x40]
mov rcx, qword [rbp - 0x38]
sub rax, rcx
jmp 0x403476
mov rax, qword [rbp - 0x30]
mov rcx, qword [rbp - 0x28]
sub rax, rcx
jmp 0x403476
jmp 0x403483
mov eax, dword [rbp - 0x10]
jmp 0x403483
mov qword [rbp - 0x88], rax
mov rax, qword [rbp - 0x88]
mov r8, rax
mov rax, qword [rbp - 0x28]
mov r11, rax
mov rax, qword [rbp - 0x38]
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memcpy
mov rax, qword [rbp - 0x88]
mov rcx, qword [rbp - 0x28]
add rcx, rax
mov qword [rbp - 0x28], rcx
mov rax, qword [rbp - 0x88]
mov rcx, qword [rbp - 0x38]
add rcx, rax
mov qword [rbp - 0x38], rcx
mov eax, dword [rbp - 0x10]
mov ecx, dword [rbp - 0x88]
sub eax, ecx
mov dword [rbp - 0x10], eax
jmp 0x40333b
jmp 0x40570a
mov rax, qword [rbp + 0x10]
add rax, 0x18
mov ecx, dword [rax]
cmp ecx, 3
jne 0x40351b
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0xa
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x4034fc
mov rax, qword [rbp + 0x10]
add rax, 0x18
mov ecx, dword [rax]
cmp ecx, 1
jne 0x4036b9
mov rax, qword [rbp + 0x10]
add rax, 0x48
mov qword [rbp - 0x90], rax
mov rax, qword [rbp + 0x10]
add rax, 0x2c
mov ecx, 0x120
mov dword [rax], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x2c
add rax, 4
mov ecx, 0x20
mov dword [rax], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0xda0
movabs rcx, 0x20
mov r8, rcx
mov ecx, 5
mov r11, rcx
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memset
mov eax, 0
mov dword [rbp - 0x94], eax
mov eax, dword [rbp - 0x94]
cmp eax, 0x8f
ja 0x4035e2
jmp 0x4035c4
mov eax, dword [rbp - 0x94]
add eax, 1
mov dword [rbp - 0x94], eax
jmp 0x40359c
mov rax, qword [rbp - 0x90]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x90], rax
mov eax, 8
mov byte [rcx], al
jmp 0x4035b3
mov eax, dword [rbp - 0x94]
cmp eax, 0xff
ja 0x403628
jmp 0x40360a
mov eax, dword [rbp - 0x94]
add eax, 1
mov dword [rbp - 0x94], eax
jmp 0x4035e2
mov rax, qword [rbp - 0x90]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x90], rax
mov eax, 9
mov byte [rcx], al
jmp 0x4035f9
mov eax, dword [rbp - 0x94]
cmp eax, 0x117
ja 0x40366e
jmp 0x403650
mov eax, dword [rbp - 0x94]
add eax, 1
mov dword [rbp - 0x94], eax
jmp 0x403628
mov rax, qword [rbp - 0x90]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x90], rax
mov eax, 7
mov byte [rcx], al
jmp 0x40363f
mov eax, dword [rbp - 0x94]
cmp eax, 0x11f
ja 0x4036b4
jmp 0x403696
mov eax, dword [rbp - 0x94]
add eax, 1
mov dword [rbp - 0x94], eax
jmp 0x40366e
mov rax, qword [rbp - 0x90]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x90], rax
mov eax, 8
mov byte [rcx], al
jmp 0x403685
jmp 0x403a3a
mov eax, 0
mov dword [rbp - 0x10], eax
mov eax, dword [rbp - 0x10]
cmp eax, 3
jae 0x403894
jmp 0x4036e0
mov eax, dword [rbp - 0x10]
mov rcx, rax
add eax, 1
mov dword [rbp - 0x10], eax
jmp 0x4036c1
mov eax, dword [rbp - 0x10]
lea rcx, [0x0041b378]
add rcx, rax
mov eax, dword [rbp - 8]
movsx edx, byte [rcx]
cmp eax, edx
jae 0x4037d0
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x40377d
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x403766
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0xb
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x403761
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x98], eax
jmp 0x403778
jmp 0x403776
mov eax, 0
mov dword [rbp - 0x98], eax
jmp 0x403778
jmp 0x40370c
jmp 0x403795
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x98], eax
mov eax, dword [rbp - 0x98]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 0x10]
lea rcx, [0x0041b37c]
add rcx, rax
mov eax, dword [rbp - 8]
movsx edx, byte [rcx]
cmp eax, edx
jb 0x4036fb
mov rax, qword [rbp + 0x10]
add rax, 0x2c
mov ecx, dword [rbp - 0x10]
shl rcx, 2
add rax, rcx
mov ecx, dword [rbp - 0x10]
lea rdx, [0x0041b380]
add rdx, rcx
mov ecx, 1
mov qword [rbp - 0xa0], rcx
movsx ecx, byte [rdx]
mov edx, dword [rbp - 0xa0]
shl edx, cl
sub edx, 1
movsxd rdx, edx
mov rcx, qword [rbp - 0x20]
and rcx, rdx
mov dword [rax], ecx
mov eax, dword [rbp - 0x10]
lea rcx, [0x0041b384]
add rcx, rax
mov rax, qword [rbp - 0x20]
mov qword [rbp - 0xa8], rcx
mov rcx, qword [rbp - 0xa8]
movsx ecx, byte [rcx]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 0x10]
lea rcx, [0x0041b388]
add rcx, rax
mov eax, dword [rbp - 8]
movsx edx, byte [rcx]
sub eax, edx
mov dword [rbp - 8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x2c
mov ecx, dword [rbp - 0x10]
shl rcx, 2
add rax, rcx
mov ecx, dword [rbp - 0x10]
shl rcx, 2
lea rdx, [0x0041b36c]
add rdx, rcx
mov ecx, dword [rax]
mov qword [rbp - 0xb0], rax
mov eax, dword [rdx]
add ecx, eax
mov rax, qword [rbp - 0xb0]
mov dword [rax], ecx
jmp 0x4036d2
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x1b40
movabs rcx, 0x120
mov r8, rcx
mov ecx, 0
mov r11, rcx
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memset
mov eax, 0
mov dword [rbp - 0x10], eax
mov rax, qword [rbp + 0x10]
add rax, 0x2c
add rax, 8
mov ecx, dword [rbp - 0x10]
mov edx, dword [rax]
cmp ecx, edx
jae 0x403a27
jmp 0x4038fa
mov eax, dword [rbp - 0x10]
mov rcx, rax
add eax, 1
mov dword [rbp - 0x10], eax
jmp 0x4038ce
mov eax, dword [rbp - 8]
cmp eax, 3
jae 0x4039cc
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x403988
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x403971
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0xe
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x40396c
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0xb8], eax
jmp 0x403983
jmp 0x403981
mov eax, 0
mov dword [rbp - 0xb8], eax
jmp 0x403983
jmp 0x403917
jmp 0x4039a0
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0xb8], eax
mov eax, dword [rbp - 0xb8]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
cmp eax, 3
jb 0x403906
mov rax, qword [rbp - 0x20]
and rax, 7
mov dword [rbp - 0xb4], eax
mov rax, qword [rbp - 0x20]
shr rax, 3
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
sub eax, 3
mov dword [rbp - 8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x1b40
mov ecx, dword [rbp - 0x10]
lea rdx, [0x0041b358]
add rdx, rcx
movzx ecx, byte [rdx]
movsxd rcx, ecx
add rax, rcx
mov ecx, dword [rbp - 0xb4]
and ecx, 0xff
mov byte [rax], cl
jmp 0x4038ec
mov rax, qword [rbp + 0x10]
add rax, 0x2c
add rax, 8
mov ecx, 0x13
mov dword [rax], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x18
mov ecx, dword [rax]
cmp ecx, 0
jl 0x40472a
jmp 0x403a66
mov rax, qword [rbp + 0x10]
add rax, 0x18
mov ecx, dword [rax]
mov rdx, rcx
add ecx, 0xffffffff
mov dword [rax], ecx
jmp 0x403a3a
mov rax, qword [rbp + 0x10]
add rax, 0x48
mov rcx, qword [rbp + 0x10]
add rcx, 0x18
mov edx, dword [rcx]
movabs rcx, 0xda0
imul rdx, rcx
add rax, rdx
mov qword [rbp - 0xc8], rax
movabs rax, 0x40
mov r8, rax
mov eax, 0
mov r11, rax
lea rax, [rbp - 0x160]
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memset
mov rax, qword [rbp - 0xc8]
add rax, 0x120
movabs rcx, 0x800
mov r8, rcx
mov ecx, 0
mov r11, rcx
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memset
mov rax, qword [rbp - 0xc8]
add rax, 0x920
movabs rcx, 0x480
mov r8, rcx
mov ecx, 0
mov r11, rcx
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memset
mov eax, 0
mov dword [rbp - 0xcc], eax
mov rax, qword [rbp + 0x10]
add rax, 0x2c
mov rcx, qword [rbp + 0x10]
add rcx, 0x18
mov edx, dword [rcx]
shl rdx, 2
add rax, rdx
mov ecx, dword [rbp - 0xcc]
mov edx, dword [rax]
cmp ecx, edx
jae 0x403b96
jmp 0x403b66
mov eax, dword [rbp - 0xcc]
add eax, 1
mov dword [rbp - 0xcc], eax
jmp 0x403b27
mov rax, qword [rbp - 0xc8]
mov ecx, dword [rbp - 0xcc]
add rax, rcx
movzx ecx, byte [rax]
movsxd rcx, ecx
shl rcx, 2
lea rax, [rbp - 0x160]
add rax, rcx
mov ecx, dword [rax]
mov rdx, rcx
add ecx, 1
mov dword [rax], ecx
jmp 0x403b55
mov eax, 0
mov dword [rbp - 0xd4], eax
mov eax, 0
mov dword [rbp - 0xd8], eax
mov eax, 0
mov dword [rbp - 0x11c], eax
mov dword [rbp - 0x120], eax
mov eax, 1
mov dword [rbp - 0xcc], eax
mov eax, dword [rbp - 0xcc]
cmp eax, 0xf
ja 0x403c64
jmp 0x403bed
mov eax, dword [rbp - 0xcc]
add eax, 1
mov dword [rbp - 0xcc], eax
jmp 0x403bc8
mov eax, dword [rbp - 0xcc]
shl rax, 2
lea rcx, [rbp - 0x160]
add rcx, rax
mov eax, dword [rbp - 0xd4]
mov edx, dword [rcx]
add eax, edx
mov dword [rbp - 0xd4], eax
mov eax, dword [rbp - 0xcc]
add eax, 1
shl rax, 2
lea rcx, [rbp - 0x120]
add rcx, rax
mov eax, dword [rbp - 0xcc]
shl rax, 2
lea rdx, [rbp - 0x160]
add rdx, rax
mov eax, dword [rbp - 0xd8]
mov qword [rbp - 0x168], rcx
mov ecx, dword [rdx]
add eax, ecx
shl eax, 1
mov dword [rbp - 0xd8], eax
mov rcx, qword [rbp - 0x168]
mov dword [rcx], eax
jmp 0x403bdc
mov eax, 0x10000
mov ecx, dword [rbp - 0xd8]
cmp eax, ecx
je 0x403ca0
mov eax, dword [rbp - 0xd4]
cmp eax, 1
jbe 0x403ca0
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x23
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x403c86
mov eax, 0xffffffff
mov dword [rbp - 0xbc], eax
mov eax, 0
mov dword [rbp - 0xdc], eax
mov rax, qword [rbp + 0x10]
add rax, 0x2c
mov rcx, qword [rbp + 0x10]
add rcx, 0x18
mov edx, dword [rcx]
shl rdx, 2
add rax, rdx
mov ecx, dword [rbp - 0xdc]
mov edx, dword [rax]
cmp ecx, edx
jae 0x404042
jmp 0x403cf5
mov eax, dword [rbp - 0xdc]
add eax, 1
mov dword [rbp - 0xdc], eax
jmp 0x403cb6
mov eax, 0
mov dword [rbp - 0x16c], eax
mov rax, qword [rbp - 0xc8]
mov ecx, dword [rbp - 0xdc]
add rax, rcx
movzx ecx, byte [rax]
mov dword [rbp - 0x178], ecx
mov eax, dword [rbp - 0x178]
cmp eax, 0
je 0x403d2d
jmp 0x403d32
jmp 0x403ce4
mov eax, dword [rbp - 0x178]
shl rax, 2
lea rcx, [rbp - 0x120]
add rcx, rax
mov eax, dword [rcx]
mov rdx, rax
add eax, 1
mov dword [rcx], eax
mov dword [rbp - 0x174], edx
mov eax, dword [rbp - 0x178]
mov dword [rbp - 0x170], eax
mov eax, dword [rbp - 0x170]
cmp eax, 0
jbe 0x403db5
jmp 0x403d99
mov eax, dword [rbp - 0x170]
mov rcx, rax
add eax, 0xffffffff
mov dword [rbp - 0x170], eax
mov eax, dword [rbp - 0x174]
shr eax, 1
mov dword [rbp - 0x174], eax
jmp 0x403d62
mov eax, dword [rbp - 0x16c]
shl eax, 1
mov ecx, dword [rbp - 0x174]
and ecx, 1
or eax, ecx
mov dword [rbp - 0x16c], eax
jmp 0x403d76
mov eax, dword [rbp - 0x178]
cmp eax, 0xa
ja 0x403e3b
mov eax, dword [rbp - 0x178]
shl eax, 9
mov ecx, dword [rbp - 0xdc]
or eax, ecx
shl eax, 0x10
sar eax, 0x10
mov word [rbp - 0x17a], ax
mov eax, dword [rbp - 0x16c]
cmp eax, 0x400
jae 0x403e36
mov rax, qword [rbp - 0xc8]
add rax, 0x120
mov ecx, dword [rbp - 0x16c]
shl rcx, 1
add rax, rcx
movsx ecx, word [rbp - 0x17a]
mov word [rax], cx
mov eax, 1
mov ecx, dword [rbp - 0x178]
shl eax, cl
mov ecx, dword [rbp - 0x16c]
add ecx, eax
mov dword [rbp - 0x16c], ecx
jmp 0x403de2
jmp 0x403ce4
mov rax, qword [rbp - 0xc8]
add rax, 0x120
mov ecx, dword [rbp - 0x16c]
and ecx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0xc0], ecx
mov eax, 0
cmp eax, ecx
jne 0x403ebd
mov rax, qword [rbp - 0xc8]
add rax, 0x120
mov ecx, dword [rbp - 0x16c]
and ecx, 0x3ff
shl rcx, 1
add rax, rcx
mov ecx, dword [rbp - 0xbc]
shl ecx, 0x10
sar ecx, 0x10
mov word [rax], cx
mov eax, dword [rbp - 0xbc]
mov dword [rbp - 0xc0], eax
mov eax, dword [rbp - 0xbc]
sub eax, 2
mov dword [rbp - 0xbc], eax
mov eax, dword [rbp - 0x16c]
shr eax, 9
mov dword [rbp - 0x16c], eax
mov eax, dword [rbp - 0x178]
mov dword [rbp - 0xd0], eax
mov eax, dword [rbp - 0xd0]
cmp eax, 0xb
jbe 0x403fe6
jmp 0x403f00
mov eax, dword [rbp - 0xd0]
mov rcx, rax
add eax, 0xffffffff
mov dword [rbp - 0xd0], eax
jmp 0x403ed8
mov eax, dword [rbp - 0x16c]
shr eax, 1
mov dword [rbp - 0x16c], eax
and eax, 1
mov ecx, dword [rbp - 0xc0]
sub ecx, eax
mov dword [rbp - 0xc0], ecx
mov rax, qword [rbp - 0xc8]
add rax, 0x920
mov ecx, 0
mov edx, dword [rbp - 0xc0]
sub ecx, edx
sub ecx, 1
movsxd rcx, ecx
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
cmp ecx, 0
je 0x403f59
jmp 0x403fb0
mov rax, qword [rbp - 0xc8]
add rax, 0x920
mov ecx, 0
mov edx, dword [rbp - 0xc0]
sub ecx, edx
sub ecx, 1
movsxd rcx, ecx
shl rcx, 1
add rax, rcx
mov ecx, dword [rbp - 0xbc]
shl ecx, 0x10
sar ecx, 0x10
mov word [rax], cx
mov eax, dword [rbp - 0xbc]
mov dword [rbp - 0xc0], eax
mov eax, dword [rbp - 0xbc]
sub eax, 2
mov dword [rbp - 0xbc], eax
jmp 0x403fe1
mov rax, qword [rbp - 0xc8]
add rax, 0x920
mov ecx, 0
mov edx, dword [rbp - 0xc0]
sub ecx, edx
sub ecx, 1
movsxd rcx, ecx
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0xc0], ecx
jmp 0x403eec
mov eax, dword [rbp - 0x16c]
shr eax, 1
mov dword [rbp - 0x16c], eax
and eax, 1
mov ecx, dword [rbp - 0xc0]
sub ecx, eax
mov dword [rbp - 0xc0], ecx
mov rax, qword [rbp - 0xc8]
add rax, 0x920
mov ecx, 0
mov edx, dword [rbp - 0xc0]
sub ecx, edx
sub ecx, 1
movsxd rcx, ecx
shl rcx, 1
add rax, rcx
mov ecx, dword [rbp - 0xdc]
shl ecx, 0x10
sar ecx, 0x10
mov word [rax], cx
jmp 0x403ce4
mov rax, qword [rbp + 0x10]
add rax, 0x18
mov ecx, dword [rax]
cmp ecx, 2
jne 0x404725
mov eax, 0
mov dword [rbp - 0x10], eax
mov rax, qword [rbp + 0x10]
add rax, 0x2c
mov rcx, qword [rbp + 0x10]
add rcx, 0x2c
add rcx, 4
mov edx, dword [rax]
mov eax, dword [rcx]
add edx, eax
mov eax, dword [rbp - 0x10]
cmp eax, edx
jae 0x404650
mov eax, dword [rbp - 8]
cmp eax, 0xf
jae 0x404302
mov rax, qword [rbp - 0x30]
mov rcx, qword [rbp - 0x28]
sub rax, rcx
cmp rax, 2
jge 0x4042aa
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x1b40
add rax, 0x120
mov rcx, qword [rbp - 0x20]
and rcx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0x184], ecx
mov eax, dword [rbp - 0x184]
cmp eax, 0
jl 0x40411c
mov eax, dword [rbp - 0x184]
sar eax, 9
mov dword [rbp - 0x188], eax
mov eax, dword [rbp - 0x188]
cmp eax, 0
je 0x404117
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x188]
cmp eax, ecx
jb 0x404117
jmp 0x4042a5
jmp 0x4041df
mov eax, dword [rbp - 8]
cmp eax, 0xa
jbe 0x4041df
mov eax, 0xa
mov dword [rbp - 0x188], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x1b40
add rax, 0x920
mov ecx, dword [rbp - 0x184]
xor ecx, 0xffffffff
mov edx, dword [rbp - 0x188]
mov qword [rbp - 0x198], rax
mov rax, rdx
add edx, 1
mov dword [rbp - 0x188], edx
mov rdx, qword [rbp - 0x20]
mov qword [rbp - 0x1a0], rcx
mov rcx, rax
shr rdx, cl
and rdx, 1
mov eax, dword [rbp - 0x1a0]
movsxd rax, eax
add rax, rdx
shl rax, 1
mov rcx, qword [rbp - 0x198]
add rcx, rax
movsx eax, word [rcx]
mov dword [rbp - 0x184], eax
mov eax, dword [rbp - 0x184]
cmp eax, 0
jge 0x4041cb
mov eax, dword [rbp - 0x188]
add eax, 1
mov ecx, dword [rbp - 8]
cmp ecx, eax
jb 0x4041cb
jmp 0x404133
mov eax, dword [rbp - 0x184]
cmp eax, 0
jl 0x4041df
jmp 0x4042a5
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x404261
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x40424a
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x10
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x404245
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x18c], eax
jmp 0x40425c
jmp 0x40425a
mov eax, 0
mov dword [rbp - 0x18c], eax
jmp 0x40425c
jmp 0x4041f0
jmp 0x404279
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x18c], eax
mov eax, dword [rbp - 0x18c]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
cmp eax, 0xf
jb 0x4040a3
jmp 0x404302
mov rax, qword [rbp - 0x28]
movzx ecx, byte [rax]
movsxd rcx, ecx
mov qword [rbp - 0x1a8], rcx
mov ecx, dword [rbp - 8]
mov rax, qword [rbp - 0x1a8]
shl rax, cl
mov rcx, qword [rbp - 0x28]
add rcx, 1
movzx edx, byte [rcx]
movsxd rdx, edx
mov ecx, dword [rbp - 8]
add ecx, 8
shl rdx, cl
or rax, rdx
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov rax, qword [rbp - 0x28]
add rax, 2
mov qword [rbp - 0x28], rax
mov eax, dword [rbp - 8]
add eax, 0x10
mov dword [rbp - 8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x1b40
add rax, 0x120
mov rcx, qword [rbp - 0x20]
and rcx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0x184], ecx
cmp ecx, 0
jl 0x404362
mov eax, dword [rbp - 0x184]
sar eax, 9
mov dword [rbp - 0x188], eax
mov eax, dword [rbp - 0x184]
and eax, 0x1ff
mov dword [rbp - 0x184], eax
jmp 0x4043ec
mov eax, 0xa
mov dword [rbp - 0x188], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x1b40
add rax, 0x920
mov ecx, dword [rbp - 0x184]
xor ecx, 0xffffffff
mov edx, dword [rbp - 0x188]
mov qword [rbp - 0x1b0], rax
mov rax, rdx
add edx, 1
mov dword [rbp - 0x188], edx
mov rdx, qword [rbp - 0x20]
mov qword [rbp - 0x1b8], rcx
mov rcx, rax
shr rdx, cl
and rdx, 1
mov eax, dword [rbp - 0x1b8]
movsxd rax, eax
add rax, rdx
shl rax, 1
mov rcx, qword [rbp - 0x1b0]
add rcx, rax
movsx eax, word [rcx]
mov dword [rbp - 0x184], eax
mov eax, dword [rbp - 0x184]
cmp eax, 0
jl 0x40436d
mov eax, dword [rbp - 0x184]
mov dword [rbp - 0xc], eax
mov rax, qword [rbp - 0x20]
mov ecx, dword [rbp - 0x188]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x188]
sub eax, ecx
mov dword [rbp - 8], eax
mov eax, dword [rbp - 0xc]
cmp eax, 0x10
jae 0x40444a
mov rax, qword [rbp + 0x10]
add rax, 0x292c
mov ecx, dword [rbp - 0x10]
mov rdx, rcx
add ecx, 1
mov dword [rbp - 0x10], ecx
add rax, rdx
mov ecx, dword [rbp - 0xc]
and ecx, 0xff
mov byte [rax], cl
jmp 0x40405d
mov eax, dword [rbp - 0xc]
cmp eax, 0x10
jne 0x404481
mov eax, dword [rbp - 0x10]
cmp eax, 0
je 0x404467
jmp 0x404481
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x11
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x404467
mov eax, dword [rbp - 0xc]
sub eax, 0x10
lea rcx, [0x0041b38c]
add rcx, rax
movsx eax, byte [rcx]
mov dword [rbp - 0x14], eax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
cmp eax, ecx
jae 0x40456d
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x404527
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x404510
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x12
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x40450b
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x1bc], eax
jmp 0x404522
jmp 0x404520
mov eax, 0
mov dword [rbp - 0x1bc], eax
jmp 0x404522
jmp 0x4044b6
jmp 0x40453f
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x1bc], eax
mov eax, dword [rbp - 0x1bc]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
cmp eax, ecx
jb 0x4044a5
mov eax, 1
mov ecx, dword [rbp - 0x14]
shl eax, cl
sub eax, 1
movsxd rax, eax
mov rcx, qword [rbp - 0x20]
and rcx, rax
mov dword [rbp - 0x180], ecx
mov rax, qword [rbp - 0x20]
mov ecx, dword [rbp - 0x14]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
sub eax, ecx
mov dword [rbp - 8], eax
mov eax, dword [rbp - 0xc]
sub eax, 0x10
lea rcx, [0x0041b390]
add rcx, rax
mov eax, dword [rbp - 0x180]
movsx edx, byte [rcx]
add eax, edx
mov dword [rbp - 0x180], eax
mov rax, qword [rbp + 0x10]
add rax, 0x292c
mov ecx, dword [rbp - 0x10]
add rax, rcx
mov ecx, dword [rbp - 0xc]
cmp ecx, 0x10
mov ecx, 0
sete cl
mov qword [rbp - 0x1c8], rax
cmp ecx, 0
je 0x40460c
mov rax, qword [rbp + 0x10]
add rax, 0x292c
mov ecx, dword [rbp - 0x10]
sub ecx, 1
add rax, rcx
jmp 0x404616
mov eax, 0
jmp 0x40461c
movzx ecx, byte [rax]
mov rax, rcx
mov ecx, dword [rbp - 0x180]
mov r8, rcx
mov r11, rax
mov rax, qword [rbp - 0x1c8]
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memset
mov eax, dword [rbp - 0x10]
mov ecx, dword [rbp - 0x180]
add eax, ecx
mov dword [rbp - 0x10], eax
jmp 0x40405d
mov rax, qword [rbp + 0x10]
add rax, 0x2c
mov rcx, qword [rbp + 0x10]
add rcx, 0x2c
add rcx, 4
mov edx, dword [rax]
mov eax, dword [rcx]
add edx, eax
mov eax, dword [rbp - 0x10]
cmp edx, eax
je 0x40468f
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x15
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x404675
mov rax, qword [rbp + 0x10]
add rax, 0x48
mov rcx, qword [rbp + 0x10]
add rcx, 0x292c
mov rdx, qword [rbp + 0x10]
add rdx, 0x2c
mov qword [rbp - 0x1d0], rax
mov eax, dword [rdx]
mov r8, rax
mov r11, rcx
mov rax, qword [rbp - 0x1d0]
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memcpy
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0xda0
mov rcx, qword [rbp + 0x10]
add rcx, 0x292c
mov rdx, qword [rbp + 0x10]
add rdx, 0x2c
mov qword [rbp - 0x1d8], rax
mov eax, dword [rdx]
add rcx, rax
mov rax, qword [rbp + 0x10]
add rax, 0x2c
add rax, 4
mov edx, dword [rax]
mov r8, rdx
mov r11, rcx
mov rax, qword [rbp - 0x1d8]
mov r10, rax
mov rcx, r10
mov rdx, r11
call sub.msvcrt.dll_memcpy
jmp 0x403a52
mov rax, qword [rbp - 0x30]
mov rcx, qword [rbp - 0x28]
sub rax, rcx
cmp rax, 4
jl 0x404759
mov rax, qword [rbp - 0x40]
mov rcx, qword [rbp - 0x38]
sub rax, rcx
cmp rax, 2
jl 0x404759
jmp 0x404b2d
mov eax, dword [rbp - 8]
cmp eax, 0xf
jae 0x4049cb
mov rax, qword [rbp - 0x30]
mov rcx, qword [rbp - 0x28]
sub rax, rcx
cmp rax, 2
jge 0x404973
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x120
mov rcx, qword [rbp - 0x20]
and rcx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0x1e4], ecx
mov eax, dword [rbp - 0x1e4]
cmp eax, 0
jl 0x4047ec
mov eax, dword [rbp - 0x1e4]
sar eax, 9
mov dword [rbp - 0x1e8], eax
mov eax, dword [rbp - 0x1e8]
cmp eax, 0
je 0x4047e7
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x1e8]
cmp eax, ecx
jb 0x4047e7
jmp 0x40496e
jmp 0x4048a8
mov eax, dword [rbp - 8]
cmp eax, 0xa
jbe 0x4048a8
mov eax, 0xa
mov dword [rbp - 0x1e8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x920
mov ecx, dword [rbp - 0x1e4]
xor ecx, 0xffffffff
mov edx, dword [rbp - 0x1e8]
mov qword [rbp - 0x1f8], rax
mov rax, rdx
add edx, 1
mov dword [rbp - 0x1e8], edx
mov rdx, qword [rbp - 0x20]
mov qword [rbp - 0x200], rcx
mov rcx, rax
shr rdx, cl
and rdx, 1
mov eax, dword [rbp - 0x200]
movsxd rax, eax
add rax, rdx
shl rax, 1
mov rcx, qword [rbp - 0x1f8]
add rcx, rax
movsx eax, word [rcx]
mov dword [rbp - 0x1e4], eax
mov eax, dword [rbp - 0x1e4]
cmp eax, 0
jge 0x404894
mov eax, dword [rbp - 0x1e8]
add eax, 1
mov ecx, dword [rbp - 8]
cmp ecx, eax
jb 0x404894
jmp 0x404803
mov eax, dword [rbp - 0x1e4]
cmp eax, 0
jl 0x4048a8
jmp 0x40496e
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x40492a
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x404913
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x17
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x40490e
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x1ec], eax
jmp 0x404925
jmp 0x404923
mov eax, 0
mov dword [rbp - 0x1ec], eax
jmp 0x404925
jmp 0x4048b9
jmp 0x404942
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x1ec], eax
mov eax, dword [rbp - 0x1ec]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
cmp eax, 0xf
jb 0x40477a
jmp 0x4049cb
mov rax, qword [rbp - 0x28]
movzx ecx, byte [rax]
movsxd rcx, ecx
mov qword [rbp - 0x208], rcx
mov ecx, dword [rbp - 8]
mov rax, qword [rbp - 0x208]
shl rax, cl
mov rcx, qword [rbp - 0x28]
add rcx, 1
movzx edx, byte [rcx]
movsxd rdx, edx
mov ecx, dword [rbp - 8]
add ecx, 8
shl rdx, cl
or rax, rdx
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov rax, qword [rbp - 0x28]
add rax, 2
mov qword [rbp - 0x28], rax
mov eax, dword [rbp - 8]
add eax, 0x10
mov dword [rbp - 8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x120
mov rcx, qword [rbp - 0x20]
and rcx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0x1e4], ecx
cmp ecx, 0
jl 0x404a24
mov eax, dword [rbp - 0x1e4]
sar eax, 9
mov dword [rbp - 0x1e8], eax
mov eax, dword [rbp - 0x1e4]
and eax, 0x1ff
mov dword [rbp - 0x1e4], eax
jmp 0x404aa7
mov eax, 0xa
mov dword [rbp - 0x1e8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x920
mov ecx, dword [rbp - 0x1e4]
xor ecx, 0xffffffff
mov edx, dword [rbp - 0x1e8]
mov qword [rbp - 0x210], rax
mov rax, rdx
add edx, 1
mov dword [rbp - 0x1e8], edx
mov rdx, qword [rbp - 0x20]
mov qword [rbp - 0x218], rcx
mov rcx, rax
shr rdx, cl
and rdx, 1
mov eax, dword [rbp - 0x218]
movsxd rax, eax
add rax, rdx
shl rax, 1
mov rcx, qword [rbp - 0x210]
add rcx, rax
movsx eax, word [rcx]
mov dword [rbp - 0x1e4], eax
mov eax, dword [rbp - 0x1e4]
cmp eax, 0
jl 0x404a2f
mov eax, dword [rbp - 0x1e4]
mov dword [rbp - 0x10], eax
mov rax, qword [rbp - 0x20]
mov ecx, dword [rbp - 0x1e8]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x1e8]
sub eax, ecx
mov dword [rbp - 8], eax
mov eax, dword [rbp - 0x10]
cmp eax, 0x100
jb 0x404ae3
jmp 0x404dcd
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x40]
cmp rax, rcx
jb 0x404b0e
mov eax, 2
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x18
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x404ae3
mov rax, qword [rbp - 0x38]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x38], rax
mov eax, dword [rbp - 0x10]
and eax, 0xff
mov byte [rcx], al
jmp 0x404dc8
mov eax, dword [rbp - 8]
cmp eax, 0x1e
jae 0x404b73
mov rax, qword [rbp - 0x28]
mov ecx, dword [rax]
mov qword [rbp - 0x228], rcx
mov ecx, dword [rbp - 8]
mov rax, qword [rbp - 0x228]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov rax, qword [rbp - 0x28]
add rax, 4
mov qword [rbp - 0x28], rax
mov eax, dword [rbp - 8]
add eax, 0x20
mov dword [rbp - 8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x120
mov rcx, qword [rbp - 0x20]
and rcx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0x21c], ecx
cmp ecx, 0
jl 0x404bba
mov eax, dword [rbp - 0x21c]
sar eax, 9
mov dword [rbp - 0x220], eax
jmp 0x404c3d
mov eax, 0xa
mov dword [rbp - 0x220], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x920
mov ecx, dword [rbp - 0x21c]
xor ecx, 0xffffffff
mov edx, dword [rbp - 0x220]
mov qword [rbp - 0x230], rax
mov rax, rdx
add edx, 1
mov dword [rbp - 0x220], edx
mov rdx, qword [rbp - 0x20]
mov qword [rbp - 0x238], rcx
mov rcx, rax
shr rdx, cl
and rdx, 1
mov eax, dword [rbp - 0x238]
movsxd rax, eax
add rax, rdx
shl rax, 1
mov rcx, qword [rbp - 0x230]
add rcx, rax
movsx eax, word [rcx]
mov dword [rbp - 0x21c], eax
mov eax, dword [rbp - 0x21c]
cmp eax, 0
jl 0x404bc5
mov eax, dword [rbp - 0x21c]
mov dword [rbp - 0x10], eax
mov rax, qword [rbp - 0x20]
mov ecx, dword [rbp - 0x220]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x220]
sub eax, ecx
mov dword [rbp - 8], eax
mov eax, dword [rbp - 0x10]
and eax, 0x100
cmp eax, 0
je 0x404c7c
jmp 0x404dcd
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x120
mov rcx, qword [rbp - 0x20]
and rcx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0x21c], ecx
cmp ecx, 0
jl 0x404cc3
mov eax, dword [rbp - 0x21c]
sar eax, 9
mov dword [rbp - 0x220], eax
jmp 0x404d46
mov eax, 0xa
mov dword [rbp - 0x220], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0x920
mov ecx, dword [rbp - 0x21c]
xor ecx, 0xffffffff
mov edx, dword [rbp - 0x220]
mov qword [rbp - 0x240], rax
mov rax, rdx
add edx, 1
mov dword [rbp - 0x220], edx
mov rdx, qword [rbp - 0x20]
mov qword [rbp - 0x248], rcx
mov rcx, rax
shr rdx, cl
and rdx, 1
mov eax, dword [rbp - 0x248]
movsxd rax, eax
add rax, rdx
shl rax, 1
mov rcx, qword [rbp - 0x240]
add rcx, rax
movsx eax, word [rcx]
mov dword [rbp - 0x21c], eax
mov eax, dword [rbp - 0x21c]
cmp eax, 0
jl 0x404cce
mov rax, qword [rbp - 0x20]
mov ecx, dword [rbp - 0x220]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x220]
sub eax, ecx
mov dword [rbp - 8], eax
mov rax, qword [rbp - 0x38]
mov ecx, dword [rbp - 0x10]
and ecx, 0xff
mov byte [rax], cl
mov eax, dword [rbp - 0x21c]
and eax, 0x100
cmp eax, 0
je 0x404da6
mov rax, qword [rbp - 0x38]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x38], rax
mov eax, dword [rbp - 0x21c]
mov dword [rbp - 0x10], eax
jmp 0x404dcd
mov rax, qword [rbp - 0x38]
add rax, 1
mov ecx, dword [rbp - 0x21c]
and ecx, 0xff
mov byte [rax], cl
mov rax, qword [rbp - 0x38]
add rax, 2
mov qword [rbp - 0x38], rax
jmp 0x40472a
mov eax, dword [rbp - 0x10]
and eax, 0x1ff
mov dword [rbp - 0x10], eax
cmp eax, 0x100
jne 0x404dea
jmp 0x40570a
mov eax, dword [rbp - 0x10]
sub eax, 0x101
shl rax, 2
lea rcx, [0x0041b1dc]
add rcx, rax
mov eax, dword [rcx]
mov dword [rbp - 0x14], eax
mov eax, dword [rbp - 0x10]
sub eax, 0x101
shl rax, 2
lea rcx, [0x0041b160]
add rcx, rax
mov eax, dword [rcx]
mov dword [rbp - 0x10], eax
mov eax, dword [rbp - 0x14]
cmp eax, 0
je 0x404f48
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
cmp eax, ecx
jae 0x404f04
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x404ebe
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x404ea7
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x19
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x404ea2
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x250], eax
jmp 0x404eb9
jmp 0x404eb7
mov eax, 0
mov dword [rbp - 0x250], eax
jmp 0x404eb9
jmp 0x404e4d
jmp 0x404ed6
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x250], eax
mov eax, dword [rbp - 0x250]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
cmp eax, ecx
jb 0x404e3c
mov eax, 1
mov ecx, dword [rbp - 0x14]
shl eax, cl
sub eax, 1
movsxd rax, eax
mov rcx, qword [rbp - 0x20]
and rcx, rax
mov dword [rbp - 0x24c], ecx
mov rax, qword [rbp - 0x20]
mov ecx, dword [rbp - 0x14]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
sub eax, ecx
mov dword [rbp - 8], eax
mov eax, dword [rbp - 0x10]
mov ecx, dword [rbp - 0x24c]
add eax, ecx
mov dword [rbp - 0x10], eax
mov eax, dword [rbp - 8]
cmp eax, 0xf
jae 0x4051c8
mov rax, qword [rbp - 0x30]
mov rcx, qword [rbp - 0x28]
sub rax, rcx
cmp rax, 2
jge 0x405170
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0xda0
add rax, 0x120
mov rcx, qword [rbp - 0x20]
and rcx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0x254], ecx
mov eax, dword [rbp - 0x254]
cmp eax, 0
jl 0x404fe2
mov eax, dword [rbp - 0x254]
sar eax, 9
mov dword [rbp - 0x258], eax
mov eax, dword [rbp - 0x258]
cmp eax, 0
je 0x404fdd
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x258]
cmp eax, ecx
jb 0x404fdd
jmp 0x40516b
jmp 0x4050a5
mov eax, dword [rbp - 8]
cmp eax, 0xa
jbe 0x4050a5
mov eax, 0xa
mov dword [rbp - 0x258], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0xda0
add rax, 0x920
mov ecx, dword [rbp - 0x254]
xor ecx, 0xffffffff
mov edx, dword [rbp - 0x258]
mov qword [rbp - 0x268], rax
mov rax, rdx
add edx, 1
mov dword [rbp - 0x258], edx
mov rdx, qword [rbp - 0x20]
mov qword [rbp - 0x270], rcx
mov rcx, rax
shr rdx, cl
and rdx, 1
mov eax, dword [rbp - 0x270]
movsxd rax, eax
add rax, rdx
shl rax, 1
mov rcx, qword [rbp - 0x268]
add rcx, rax
movsx eax, word [rcx]
mov dword [rbp - 0x254], eax
mov eax, dword [rbp - 0x254]
cmp eax, 0
jge 0x405091
mov eax, dword [rbp - 0x258]
add eax, 1
mov ecx, dword [rbp - 8]
cmp ecx, eax
jb 0x405091
jmp 0x404ff9
mov eax, dword [rbp - 0x254]
cmp eax, 0
jl 0x4050a5
jmp 0x40516b
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x405127
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x405110
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x1a
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x40510b
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x25c], eax
jmp 0x405122
jmp 0x405120
mov eax, 0
mov dword [rbp - 0x25c], eax
jmp 0x405122
jmp 0x4050b6
jmp 0x40513f
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x25c], eax
mov eax, dword [rbp - 0x25c]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
cmp eax, 0xf
jb 0x404f69
jmp 0x4051c8
mov rax, qword [rbp - 0x28]
movzx ecx, byte [rax]
movsxd rcx, ecx
mov qword [rbp - 0x278], rcx
mov ecx, dword [rbp - 8]
mov rax, qword [rbp - 0x278]
shl rax, cl
mov rcx, qword [rbp - 0x28]
add rcx, 1
movzx edx, byte [rcx]
movsxd rdx, edx
mov ecx, dword [rbp - 8]
add ecx, 8
shl rdx, cl
or rax, rdx
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov rax, qword [rbp - 0x28]
add rax, 2
mov qword [rbp - 0x28], rax
mov eax, dword [rbp - 8]
add eax, 0x10
mov dword [rbp - 8], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0xda0
add rax, 0x120
mov rcx, qword [rbp - 0x20]
and rcx, 0x3ff
shl rcx, 1
add rax, rcx
movsx ecx, word [rax]
mov dword [rbp - 0x254], ecx
cmp ecx, 0
jl 0x405228
mov eax, dword [rbp - 0x254]
sar eax, 9
mov dword [rbp - 0x258], eax
mov eax, dword [rbp - 0x254]
and eax, 0x1ff
mov dword [rbp - 0x254], eax
jmp 0x4052b2
mov eax, 0xa
mov dword [rbp - 0x258], eax
mov rax, qword [rbp + 0x10]
add rax, 0x48
add rax, 0xda0
add rax, 0x920
mov ecx, dword [rbp - 0x254]
xor ecx, 0xffffffff
mov edx, dword [rbp - 0x258]
mov qword [rbp - 0x280], rax
mov rax, rdx
add edx, 1
mov dword [rbp - 0x258], edx
mov rdx, qword [rbp - 0x20]
mov qword [rbp - 0x288], rcx
mov rcx, rax
shr rdx, cl
and rdx, 1
mov eax, dword [rbp - 0x288]
movsxd rax, eax
add rax, rdx
shl rax, 1
mov rcx, qword [rbp - 0x280]
add rcx, rax
movsx eax, word [rcx]
mov dword [rbp - 0x254], eax
mov eax, dword [rbp - 0x254]
cmp eax, 0
jl 0x405233
mov eax, dword [rbp - 0x254]
mov dword [rbp - 0xc], eax
mov rax, qword [rbp - 0x20]
mov ecx, dword [rbp - 0x258]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x258]
sub eax, ecx
mov dword [rbp - 8], eax
mov eax, dword [rbp - 0xc]
shl rax, 2
lea rcx, [0x0041b2d8]
add rcx, rax
mov eax, dword [rcx]
mov dword [rbp - 0x14], eax
mov eax, dword [rbp - 0xc]
shl rax, 2
lea rcx, [0x0041b258]
add rcx, rax
mov eax, dword [rcx]
mov dword [rbp - 0xc], eax
mov eax, dword [rbp - 0x14]
cmp eax, 0
je 0x40542c
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
cmp eax, ecx
jae 0x4053e8
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x4053a2
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x40538b
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x1b
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x405386
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x290], eax
jmp 0x40539d
jmp 0x40539b
mov eax, 0
mov dword [rbp - 0x290], eax
jmp 0x40539d
jmp 0x405331
jmp 0x4053ba
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x290], eax
mov eax, dword [rbp - 0x290]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
cmp eax, ecx
jb 0x405320
mov eax, 1
mov ecx, dword [rbp - 0x14]
shl eax, cl
sub eax, 1
movsxd rax, eax
mov rcx, qword [rbp - 0x20]
and rcx, rax
mov dword [rbp - 0x28c], ecx
mov rax, qword [rbp - 0x20]
mov ecx, dword [rbp - 0x14]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
mov ecx, dword [rbp - 0x14]
sub eax, ecx
mov dword [rbp - 8], eax
mov eax, dword [rbp - 0xc]
mov ecx, dword [rbp - 0x28c]
add eax, ecx
mov dword [rbp - 0xc], eax
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp + 0x28]
sub rax, rcx
mov qword [rbp - 0x50], rax
mov eax, dword [rbp - 0xc]
mov rcx, qword [rbp - 0x50]
cmp rax, rcx
jbe 0x405474
mov eax, dword [rbp + 0x40]
and eax, 4
cmp eax, 0
je 0x405474
mov eax, 0xffffffff
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x25
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x40545a
mov eax, dword [rbp - 0xc]
mov rcx, qword [rbp - 0x50]
sub rcx, rax
mov rax, qword [rbp - 0x48]
and rcx, rax
mov rax, qword [rbp + 0x28]
add rax, rcx
mov qword [rbp - 0x1e0], rax
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x1e0]
cmp rax, rcx
mov eax, 0
seta al
cmp eax, 0
je 0x4054b7
jmp 0x4054c3
mov rax, qword [rbp - 0x1e0]
jmp 0x4054c7
mov rax, qword [rbp - 0x38]
mov ecx, dword [rbp - 0x10]
add rax, rcx
mov rcx, qword [rbp - 0x40]
cmp rax, rcx
jbe 0x40555d
mov eax, dword [rbp - 0x10]
mov rcx, rax
add eax, 0xffffffff
mov dword [rbp - 0x10], eax
cmp ecx, 0
je 0x405553
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x40]
cmp rax, rcx
jb 0x40551a
mov eax, 2
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x35
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x4054ef
mov rax, qword [rbp - 0x38]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x38], rax
mov rax, qword [rbp - 0x50]
mov rdx, rax
add rax, 1
mov qword [rbp - 0x50], rax
mov eax, dword [rbp - 0xc]
sub rdx, rax
mov rax, qword [rbp - 0x48]
and rdx, rax
mov rax, qword [rbp + 0x28]
add rax, rdx
movzx edx, byte [rax]
mov byte [rcx], dl
jmp 0x4054da
jmp 0x40472a
mov eax, dword [rbp - 0x10]
cmp eax, 9
jb 0x405647
mov eax, dword [rbp - 0x10]
mov ecx, dword [rbp - 0xc]
cmp eax, ecx
ja 0x405647
mov eax, dword [rbp - 0x10]
and eax, 0xfffffff8
mov rcx, qword [rbp - 0x1e0]
add rcx, rax
mov qword [rbp - 0x298], rcx
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x1e0]
mov edx, dword [rcx]
mov dword [rax], edx
mov rax, qword [rbp - 0x38]
add rax, 4
mov rcx, qword [rbp - 0x1e0]
add rcx, 4
mov edx, dword [rcx]
mov dword [rax], edx
mov rax, qword [rbp - 0x38]
add rax, 8
mov qword [rbp - 0x38], rax
mov rax, qword [rbp - 0x1e0]
add rax, 8
mov qword [rbp - 0x1e0], rax
mov rcx, qword [rbp - 0x298]
cmp rax, rcx
jb 0x40558e
mov eax, dword [rbp - 0x10]
and eax, 7
mov dword [rbp - 0x10], eax
cmp eax, 3
jae 0x405647
mov eax, dword [rbp - 0x10]
cmp eax, 0
je 0x405642
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x1e0]
movzx edx, byte [rcx]
mov byte [rax], dl
mov eax, dword [rbp - 0x10]
cmp eax, 1
jbe 0x405634
mov rax, qword [rbp - 0x38]
add rax, 1
mov rcx, qword [rbp - 0x1e0]
add rcx, 1
movzx edx, byte [rcx]
mov byte [rax], dl
mov eax, dword [rbp - 0x10]
mov rcx, qword [rbp - 0x38]
add rcx, rax
mov qword [rbp - 0x38], rcx
jmp 0x40472a
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x1e0]
movzx edx, byte [rcx]
mov byte [rax], dl
mov rax, qword [rbp - 0x38]
add rax, 1
mov rcx, qword [rbp - 0x1e0]
add rcx, 1
movzx edx, byte [rcx]
mov byte [rax], dl
mov rax, qword [rbp - 0x38]
add rax, 2
mov rcx, qword [rbp - 0x1e0]
add rcx, 2
movzx edx, byte [rcx]
mov byte [rax], dl
mov rax, qword [rbp - 0x38]
add rax, 3
mov qword [rbp - 0x38], rax
mov rax, qword [rbp - 0x1e0]
add rax, 3
mov qword [rbp - 0x1e0], rax
mov eax, dword [rbp - 0x10]
sub eax, 3
mov dword [rbp - 0x10], eax
cmp eax, 2
jg 0x405647
mov eax, dword [rbp - 0x10]
cmp eax, 0
jle 0x405705
mov rax, qword [rbp - 0x38]
mov rcx, qword [rbp - 0x1e0]
movzx edx, byte [rcx]
mov byte [rax], dl
mov eax, dword [rbp - 0x10]
cmp eax, 1
jle 0x4056f7
mov rax, qword [rbp - 0x38]
add rax, 1
mov rcx, qword [rbp - 0x1e0]
add rcx, 1
movzx edx, byte [rcx]
mov byte [rax], dl
mov eax, dword [rbp - 0x10]
mov rcx, qword [rbp - 0x38]
add rcx, rax
mov qword [rbp - 0x38], rcx
jmp 0x40472a
mov rax, qword [rbp + 0x10]
add rax, 0x14
mov ecx, dword [rax]
and ecx, 1
cmp ecx, 0
je 0x402d55
mov eax, dword [rbp + 0x40]
and eax, 1
cmp eax, 0
je 0x405a26
mov eax, dword [rbp - 8]
and eax, 7
mov ecx, dword [rbp - 8]
cmp ecx, eax
jae 0x40580b
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x4057c2
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x4057ab
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x20
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x4057a6
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x29c], eax
jmp 0x4057bd
jmp 0x4057bb
mov eax, 0
mov dword [rbp - 0x29c], eax
jmp 0x4057bd
jmp 0x405751
jmp 0x4057da
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x29c], eax
mov eax, dword [rbp - 0x29c]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
and eax, 7
mov ecx, dword [rbp - 8]
cmp ecx, eax
jb 0x405740
mov eax, dword [rbp - 8]
and eax, 7
mov rcx, qword [rbp - 0x20]
mov qword [rbp - 0x2a8], rcx
mov rcx, rax
mov rax, qword [rbp - 0x2a8]
shr rax, cl
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
and eax, 7
mov ecx, dword [rbp - 8]
sub ecx, eax
mov dword [rbp - 8], ecx
mov eax, 0
mov dword [rbp - 0x10], eax
mov eax, dword [rbp - 0x10]
cmp eax, 4
jae 0x405a26
jmp 0x40585f
mov eax, dword [rbp - 0x10]
add eax, 1
mov dword [rbp - 0x10], eax
jmp 0x405843
mov eax, dword [rbp - 8]
cmp eax, 0
je 0x405968
mov eax, dword [rbp - 8]
cmp eax, 8
jae 0x40593d
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x4058f9
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x4058e2
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x29
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x4058dd
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x2b0], eax
jmp 0x4058f4
jmp 0x4058f2
mov eax, 0
mov dword [rbp - 0x2b0], eax
jmp 0x4058f4
jmp 0x405888
jmp 0x405911
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x2b0], eax
mov eax, dword [rbp - 0x2b0]
mov ecx, dword [rbp - 8]
shl rax, cl
mov rcx, qword [rbp - 0x20]
or rcx, rax
mov qword [rbp - 0x20], rcx
mov eax, dword [rbp - 8]
add eax, 8
mov dword [rbp - 8], eax
mov eax, dword [rbp - 8]
cmp eax, 8
jb 0x405877
mov rax, qword [rbp - 0x20]
and rax, 0xff
mov dword [rbp - 0x2ac], eax
mov rax, qword [rbp - 0x20]
shr rax, 8
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 8]
sub eax, 8
mov dword [rbp - 8], eax
jmp 0x405a02
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jb 0x4059ea
mov eax, dword [rbp + 0x40]
and eax, 2
cmp eax, 0
je 0x4059d3
mov eax, 1
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x2a
mov dword [rax], ecx
jmp 0x405bd2
mov rax, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x30]
cmp rax, rcx
jae 0x4059ce
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x2ac], eax
jmp 0x4059e5
jmp 0x4059e3
mov eax, 0
mov dword [rbp - 0x2ac], eax
jmp 0x4059e5
jmp 0x405979
jmp 0x405a02
mov rax, qword [rbp - 0x28]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x28], rax
movzx eax, byte [rcx]
mov dword [rbp - 0x2ac], eax
mov rax, qword [rbp + 0x10]
add rax, 0x10
mov rcx, qword [rbp + 0x10]
add rcx, 0x10
mov edx, dword [rcx]
shl edx, 8
mov ecx, dword [rbp - 0x2ac]
or edx, ecx
mov dword [rax], edx
jmp 0x405854
mov eax, 0
mov dword [rbp - 4], eax
mov rax, qword [rbp + 0x10]
mov ecx, 0x22
mov dword [rax], ecx
jmp 0x405bd2
jmp 0x405a26
mov ecx, dword [rax]
cmp ecx, 0x18
ja 0x405b18
cmp ecx, 0x18
jae 0x404b0c
cmp ecx, 0xa
ja 0x405ac6
cmp ecx, 0xa
jae 0x403514
cmp ecx, 5
ja 0x405aa6
cmp ecx, 5
jae 0x402eb5
cmp ecx, 0
je 0x402aac
cmp ecx, 1
je 0x402b35
cmp ecx, 2
je 0x402bdb
cmp ecx, 3
je 0x402d99
jmp 0x405bd2
cmp ecx, 6
je 0x402fda
cmp ecx, 7
je 0x4030d3
cmp ecx, 9
je 0x403370
jmp 0x405bd2
cmp ecx, 0x11
ja 0x405af8
cmp ecx, 0x11
jae 0x40447f
cmp ecx, 0xb
je 0x403733
cmp ecx, 0xe
je 0x40393e
cmp ecx, 0x10
je 0x404217
jmp 0x405bd2
cmp ecx, 0x12
je 0x4044dd
cmp ecx, 0x15
je 0x40468d
cmp ecx, 0x17
je 0x4048e0
jmp 0x405bd2
cmp ecx, 0x26
ja 0x405b85
cmp ecx, 0x26
jae 0x4033aa
cmp ecx, 0x22
ja 0x405b65
cmp ecx, 0x22
jae 0x405a3e
cmp ecx, 0x19
je 0x404e74
cmp ecx, 0x1a
je 0x4050dd
cmp ecx, 0x1b
je 0x405358
cmp ecx, 0x20
je 0x405778
jmp 0x405bd2
cmp ecx, 0x23
je 0x403c9e
cmp ecx, 0x24
je 0x402d53
cmp ecx, 0x25
je 0x405472
jmp 0x405bd2
cmp ecx, 0x2a
ja 0x405bb7
cmp ecx, 0x2a
jae 0x4059a0
cmp ecx, 0x27
je 0x4031e2
cmp ecx, 0x28
je 0x4033c7
cmp ecx, 0x29
je 0x4058af
jmp 0x405bd2
cmp ecx, 0x33
je 0x403240
cmp ecx, 0x34
je 0x40330e
cmp ecx, 0x35
je 0x405518
mov rax, qword [rbp + 0x10]
add rax, 4
mov ecx, dword [rbp - 8]
mov dword [rax], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x38
mov rcx, qword [rbp - 0x20]
mov qword [rax], rcx
mov rax, qword [rbp + 0x10]
add rax, 0x20
mov ecx, dword [rbp - 0xc]
mov dword [rax], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x24
mov ecx, dword [rbp - 0x10]
mov dword [rax], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x28
mov ecx, dword [rbp - 0x14]
mov dword [rax], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x40
mov rcx, qword [rbp - 0x50]
mov qword [rax], rcx
mov rax, qword [rbp + 0x20]
mov rcx, qword [rbp - 0x28]
mov rdx, qword [rbp + 0x18]
sub rcx, rdx
mov qword [rax], rcx
mov rax, qword [rbp + 0x38]
mov rcx, qword [rbp - 0x38]
mov rdx, qword [rbp + 0x30]
sub rcx, rdx
mov qword [rax], rcx
mov eax, dword [rbp + 0x40]
and eax, 9
cmp eax, 0
je 0x405fbb
mov eax, dword [rbp - 4]
cmp eax, 0
jl 0x405fbb
mov rax, qword [rbp + 0x30]
mov qword [rbp - 0x2b8], rax
mov rax, qword [rbp + 0x38]
mov rcx, qword [rax]
mov qword [rbp - 0x2c0], rcx
mov rax, qword [rbp + 0x10]
add rax, 0x1c
mov ecx, dword [rax]
and ecx, 0xffff
mov dword [rbp - 0x2c8], ecx
mov rax, qword [rbp + 0x10]
add rax, 0x1c
mov ecx, dword [rax]
shr ecx, 0x10
mov dword [rbp - 0x2cc], ecx
mov rax, qword [rbp - 0x2c0]
movabs rcx, 0x15b0
xor rdx, rdx
div rcx
mov qword [rbp - 0x2d8], rdx
mov rax, qword [rbp - 0x2c0]
cmp rax, 0
je 0x405f61
mov eax, 0
mov dword [rbp - 0x2c4], eax
mov eax, dword [rbp - 0x2c4]
add eax, 7
mov rcx, qword [rbp - 0x2d8]
cmp rax, rcx
jae 0x405ea1
jmp 0x405d20
mov eax, dword [rbp - 0x2c4]
add eax, 8
mov dword [rbp - 0x2c4], eax
mov rax, qword [rbp - 0x2b8]
add rax, 8
mov qword [rbp - 0x2b8], rax
jmp 0x405cdf
mov rax, qword [rbp - 0x2b8]
mov ecx, dword [rbp - 0x2c8]
movzx edx, byte [rax]
add ecx, edx
mov dword [rbp - 0x2c8], ecx
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
mov rax, qword [rbp - 0x2b8]
add rax, 1
mov ecx, dword [rbp - 0x2c8]
movzx edx, byte [rax]
add ecx, edx
mov dword [rbp - 0x2c8], ecx
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
mov rax, qword [rbp - 0x2b8]
add rax, 2
mov ecx, dword [rbp - 0x2c8]
movzx edx, byte [rax]
add ecx, edx
mov dword [rbp - 0x2c8], ecx
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
mov rax, qword [rbp - 0x2b8]
add rax, 3
mov ecx, dword [rbp - 0x2c8]
movzx edx, byte [rax]
add ecx, edx
mov dword [rbp - 0x2c8], ecx
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
mov rax, qword [rbp - 0x2b8]
add rax, 4
mov ecx, dword [rbp - 0x2c8]
movzx edx, byte [rax]
add ecx, edx
mov dword [rbp - 0x2c8], ecx
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
mov rax, qword [rbp - 0x2b8]
add rax, 5
mov ecx, dword [rbp - 0x2c8]
movzx edx, byte [rax]
add ecx, edx
mov dword [rbp - 0x2c8], ecx
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
mov rax, qword [rbp - 0x2b8]
add rax, 6
mov ecx, dword [rbp - 0x2c8]
movzx edx, byte [rax]
add ecx, edx
mov dword [rbp - 0x2c8], ecx
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
mov rax, qword [rbp - 0x2b8]
add rax, 7
mov ecx, dword [rbp - 0x2c8]
movzx edx, byte [rax]
add ecx, edx
mov dword [rbp - 0x2c8], ecx
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
jmp 0x405cfd
mov eax, dword [rbp - 0x2c4]
mov rcx, qword [rbp - 0x2d8]
cmp rax, rcx
jae 0x405f09
jmp 0x405ecd
mov eax, dword [rbp - 0x2c4]
add eax, 1
mov dword [rbp - 0x2c4], eax
jmp 0x405ea1
mov rax, qword [rbp - 0x2b8]
mov rcx, rax
add rax, 1
mov qword [rbp - 0x2b8], rax
mov eax, dword [rbp - 0x2c8]
movzx edx, byte [rcx]
add eax, edx
mov dword [rbp - 0x2c8], eax
mov eax, dword [rbp - 0x2cc]
mov ecx, dword [rbp - 0x2c8]
add eax, ecx
mov dword [rbp - 0x2cc], eax
jmp 0x405ebc
mov eax, dword [rbp - 0x2c8]
mov ecx, 0xfff1
xor edx, edx
div ecx
mov dword [rbp - 0x2c8], edx
mov eax, dword [rbp - 0x2cc]
mov ecx, 0xfff1
xor edx, edx
div ecx
mov dword [rbp - 0x2cc], edx
mov rax, qword [rbp - 0x2c0]
mov rcx, qword [rbp - 0x2d8]
sub rax, rcx
mov qword [rbp - 0x2c0], rax
movabs rax, 0x15b0
mov qword [rbp - 0x2d8], rax
jmp 0x405cc3
mov rax, qword [rbp + 0x10]
add rax, 0x1c
mov ecx, dword [rbp - 0x2cc]
shl ecx, 0x10
mov edx, dword [rbp - 0x2c8]
add ecx, edx
mov dword [rax], ecx
mov eax, dword [rbp - 4]
cmp eax, 0
jne 0x405fbb
mov eax, dword [rbp + 0x40]
and eax, 1
cmp eax, 0
je 0x405fbb
mov rax, qword [rbp + 0x10]
add rax, 0x1c
mov rcx, qword [rbp + 0x10]
add rcx, 0x10
mov edx, dword [rax]
mov eax, dword [rcx]
cmp edx, eax
je 0x405fbb
mov eax, 0xfffffffe
mov dword [rbp - 4], eax
mov eax, dword [rbp - 4]
leave
ret