Function at 0x2e3c5d930
Capabilities:
Encrypt data using rc4 ksa
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
push r15
mov eax, 0x1878
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.2e3e473f0
sub rsp, rax
movaps xmmword [rsp + 0x17f0], xmm6
movaps xmmword [rsp + 0x1800], xmm7
movaps xmmword [rsp + 0x1810], xmm8
movaps xmmword [rsp + 0x1820], xmm9
movaps xmmword [rsp + 0x1830], xmm10
movaps xmmword [rsp + 0x1840], xmm11
movaps xmmword [rsp + 0x1850], xmm12
movaps xmmword [rsp + 0x1860], xmm13
pxor xmm0, xmm0
xor r10d, r10d
mov r15, qword [rcx]
mov qword [rcx + 0x18], 0
mov r13, rcx
movups xmmword [rcx + 8], xmm0
mov rax, qword [r15 + 0xc8]
mov dword [rsp + 0x18c8], edx
mov rdx, qword [r15 + 0xc0]
mov dword [rsp + 0x18d0], r8d
mov word [rsp + 0x387], r10w
mov byte [rsp + 0x389], 0
cmp rdx, rax
jb 0x2e3c5da70
mov r9d, dword [r15 + 0x30]
test r9d, r9d
jne 0x2e3c5e930
nop dword [rax]
lea rcx, [0x2e3e69480]
lea rdi, [0x2e3ed3de0]
xor r14d, r14d
call fcn.2e3e59960
mov qword [rax], rdi
movaps xmm6, xmmword [rsp + 0x17f0]
mov eax, r14d
movaps xmm7, xmmword [rsp + 0x1800]
movaps xmm8, xmmword [rsp + 0x1810]
movaps xmm9, xmmword [rsp + 0x1820]
movaps xmm10, xmmword [rsp + 0x1830]
movaps xmm11, xmmword [rsp + 0x1840]
movaps xmm12, xmmword [rsp + 0x1850]
movaps xmm13, xmmword [rsp + 0x1860]
add rsp, 0x1878
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, [rdx + 1]
mov qword [r15 + 0xc0], rcx
movzx edx, byte [rdx]
cmp dl, 0x89
jne 0x2e3c5d9f0
cmp rcx, rax
jb 0x2e3c5daf0
mov r8d, dword [r15 + 0x30]
test r8d, r8d
je 0x2e3c5d9f0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
lea rdx, [r15 + 0x39]
test eax, eax
je 0x2e3c5e8f0
cdqe
movq xmm0, rdx
movzx ecx, byte [r15 + 0x38]
add rax, rbx
movq xmm2, rax
punpcklqdq xmm0, xmm2
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5dafe
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ecx, byte [rcx]
cmp cl, 0x50
jne 0x2e3c5d9f0
cmp rdx, rax
jb 0x2e3c5db70
mov ecx, dword [r15 + 0x30]
test ecx, ecx
je 0x2e3c5d9f0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
je 0x2e3c5dd50
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rax, rbx
movq xmm3, rax
punpcklqdq xmm0, xmm3
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5db7e
lea rcx, [rdx + 1]
mov qword [r15 + 0xc0], rcx
movzx edx, byte [rdx]
cmp dl, 0x4e
jne 0x2e3c5d9f0
cmp rcx, rax
jb 0x2e3c5dbf0
mov edx, dword [r15 + 0x30]
test edx, edx
je 0x2e3c5d9f0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
lea rdx, [r15 + 0x39]
test eax, eax
je 0x2e3c5e8f0
cdqe
movq xmm0, rdx
movzx ecx, byte [r15 + 0x38]
add rax, rbx
movq xmm4, rax
punpcklqdq xmm0, xmm4
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5dbfe
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ecx, byte [rcx]
cmp cl, 0x47
jne 0x2e3c5d9f0
cmp rdx, rax
jb 0x2e3c5dc70
mov eax, dword [r15 + 0x30]
test eax, eax
je 0x2e3c5d9f0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
je 0x2e3c5dd50
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rax, rbx
movq xmm2, rax
punpcklqdq xmm0, xmm2
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5dc7e
lea rcx, [rdx + 1]
mov qword [r15 + 0xc0], rcx
movzx edx, byte [rdx]
cmp dl, 0xd
jne 0x2e3c5d9f0
cmp rcx, rax
jb 0x2e3c5dcf0
mov eax, dword [r15 + 0x30]
test eax, eax
je 0x2e3c5d9f0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
lea rdx, [r15 + 0x39]
test eax, eax
je 0x2e3c5e8f0
cdqe
movq xmm0, rdx
movzx ecx, byte [r15 + 0x38]
add rax, rbx
movq xmm3, rax
punpcklqdq xmm0, xmm3
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5dcfe
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ecx, byte [rcx]
cmp cl, 0xa
jne 0x2e3c5d9f0
cmp rdx, rax
jb 0x2e3c5dd78
mov eax, dword [r15 + 0x30]
test eax, eax
je 0x2e3c5d9f0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
jne 0x2e3c5ea90
nop dword [rax]
movq xmm0, rcx
mov dword [r15 + 0x30], 0
punpcklqdq xmm0, xmm0
mov byte [r15 + 0x38], 0
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5d9f0
lea rcx, [rdx + 1]
mov qword [r15 + 0xc0], rcx
movzx edx, byte [rdx]
cmp dl, 0x1a
jne 0x2e3c5d9f0
cmp rcx, rax
jb 0x2e3c5ddf8
mov eax, dword [r15 + 0x30]
test eax, eax
je 0x2e3c5d9f0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
je 0x2e3c5dd50
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rbx, rax
movq xmm4, rbx
punpcklqdq xmm0, xmm4
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5de06
lea rax, [rcx + 1]
mov qword [r15 + 0xc0], rax
movzx edx, byte [rcx]
cmp dl, 0xa
jne 0x2e3c5d9f0
xor r12d, r12d
mov dword [rsp + 0x5c], 0
mov r14d, 1
xor edi, edi
mov dword [rsp + 0x54], 0
mov dword [rsp + 0x58], 0
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x50], 0
mov byte [rsp + 0xa3], 0
mov byte [rsp + 0x40], r12b
nop
mov rcx, r15
call fcn.2e3c5b080
mov rcx, r15
mov ebx, eax
call fcn.2e3c5b080
mov rcx, r15
movzx ebp, al
call fcn.2e3c5b080
mov rcx, r15
movzx esi, al
call fcn.2e3c5b080
movzx r9d, bl
shl esi, 8
mov rcx, r15
shl r9d, 8
movzx eax, al
add r9d, ebp
add esi, eax
shl r9d, 0x10
lea r12d, [r9 + rsi]
call fcn.2e3c5b080
mov rcx, r15
mov ebx, eax
call fcn.2e3c5b080
mov rcx, r15
movzx ebp, al
call fcn.2e3c5b080
mov rcx, r15
movzx esi, al
call fcn.2e3c5b080
shl esi, 8
movzx r8d, al
movzx eax, bl
shl eax, 8
add esi, r8d
add eax, ebp
shl eax, 0x10
add eax, esi
cmp eax, 0x49484452
je 0x2e3c5e5a8
ja 0x2e3c5e3e0
cmp eax, 0x49444154
je 0x2e3c5e508
cmp eax, 0x49454e44
jne 0x2e3c5e4a8
movzx r12d, byte [rsp + 0x40]
test r14d, r14d
jne 0x2e3c5e700
mov eax, dword [rsp + 0x18c8]
test eax, eax
jne 0x2e3c5e7f8
mov rbx, qword [r13 + 8]
test rbx, rbx
je 0x2e3c5ea3a
mov eax, dword [r15 + 4]
mov esi, dword [r15]
mov edx, dword [r15 + 8]
imul esi, dword [r13 + 0x20]
mov edi, dword [rsp + 0x5c]
imul edx, eax
add esi, 7
xor edi, 1
shr esi, 3
imul esi, edx
add esi, eax
movsxd rsi, esi
mov rcx, rsi
call sub.msvcrt.dll_malloc
movq xmm1, rax
punpcklqdq xmm1, xmm1
test rax, rax
je 0x2e3c5fa9d
movsxd rdx, dword [rsp + 0x50]
add rax, rsi
movq xmm0, rbx
mov dword [rsp + 0x820], 1
mov qword [rsp + 0x818], rax
lea rax, [rsp + 0x7f0]
add rdx, rbx
mov rcx, rax
mov qword [rsp + 0x70], rax
movq xmm5, rdx
mov edx, edi
movups xmmword [rsp + 0x808], xmm1
punpcklqdq xmm0, xmm5
movaps xmmword [rsp + 0x7f0], xmm0
call fcn.2e3c56780
mov r14d, eax
test eax, eax
je 0x2e3c5ef8d
mov rax, qword [rsp + 0x810]
mov rsi, qword [rsp + 0x808]
sub rsi, rax
mov qword [r13 + 0x10], rax
mov dword [rsp + 0xb0], esi
test rax, rax
je 0x2e3c5e716
mov rcx, qword [r13 + 8]
call sub.msvcrt.dll_free
mov qword [r13 + 8], 0
mov eax, dword [r15 + 8]
mov dword [rsp + 0xa4], eax
add eax, 1
cmp eax, dword [rsp + 0x18d0]
je 0x2e3c5ef49
cmp byte [rsp + 0xa3], 0
cmove eax, dword [rsp + 0xa4]
mov dword [rsp + 0xa4], eax
mov edi, eax
mov dword [r15 + 0xc], edi
mov edx, dword [r13 + 0x20]
mov rax, qword [r13 + 0x10]
mov r14, qword [r13]
cmp edx, 0x10
mov ebp, dword [rsp + 0x58]
mov dword [rsp + 0xb4], edx
mov r8d, dword [r14 + 4]
mov ebx, dword [r14]
mov qword [rsp + 0xa8], rax
lea eax, [rdi + rdi]
cmovne eax, edi
mov edi, eax
test ebp, ebp
je 0x2e3c5ef0c
mov eax, r8d
or eax, ebx
js 0x2e3c5e880
test r8d, r8d
je 0x2e3c5e08e
mov eax, 0x7fffffff
cdq
idiv r8d
cmp ebx, eax
jg 0x2e3c5e880
test edi, edi
js 0x2e3c5e880
mov ecx, r8d
imul ecx, ebx
test edi, edi
je 0x2e3c5e0b0
mov eax, 0x7fffffff
cdq
idiv edi
cmp ecx, eax
jg 0x2e3c5e880
imul ecx, edi
mov dword [rsp + 0x50], r8d
movsxd rcx, ecx
call sub.msvcrt.dll_malloc
mov qword [rsp + 0x40], rax
test rax, rax
je 0x2e3c5e880
lea rax, [rsp + 0x390]
movsxd rdi, edi
mov rcx, r14
mov r8d, dword [rsp + 0x50]
mov qword [rsp + 0x88], rax
lea rax, [rsp + 0x3d0]
mov r14, rdi
movdqa xmm13, xmmword [0x2e3ed4930]
mov qword [rsp + 0x98], rax
lea rax, [rsp + 0x3b0]
movq xmm12, qword [0x2e3ed4940]
mov qword [rsp + 0x18c0], r13
movdqa xmm7, xmmword [0x2e3ed4990]
mov r13d, edi
mov qword [rsp + 0x48], 0
movdqa xmm11, xmmword [0x2e3ed4950]
mov qword [rsp + 0x90], rax
movq xmm10, qword [0x2e3ed4960]
mov byte [rsp + 0xc7], r12b
movdqa xmm9, xmmword [0x2e3ed4970]
mov qword [rsp + 0xc8], r15
movq xmm8, qword [0x2e3ed4980]
movq xmm6, qword [0x2e3ed49b8]
jmp 0x2e3c5e1a6
add qword [rsp + 0x48], 4
mov rax, qword [rsp + 0x48]
cmp rax, 0x1c
je 0x2e3c5eab5
mov rax, qword [rsp + 0x18c0]
mov rcx, qword [rax]
mov ebx, dword [rcx]
mov r8d, dword [rcx + 4]
mov rdi, qword [rsp + 0x48]
xor edx, edx
mov rax, qword [rsp + 0x88]
mov dword [rsp + 0x3a8], 0
movaps xmmword [rsp + 0x390], xmm13
movq qword [rsp + 0x3a0], xmm12
mov r12d, dword [rax + rdi]
mov rax, qword [rsp + 0x98]
mov dword [rsp + 0x3e8], 1
movaps xmmword [rsp + 0x3d0], xmm9
movq qword [rsp + 0x3e0], xmm8
mov esi, dword [rax + rdi]
mov dword [rsp + 0x3c8], 1
lea eax, [rsi + rbx - 1]
movaps xmmword [rsp + 0x3b0], xmm11
sub eax, r12d
movaps xmmword [rsp + 0x7f0], xmm7
div esi
movq qword [rsp + 0x3c0], xmm10
mov dword [rsp + 0x808], 2
movq qword [rsp + 0x800], xmm6
xor edx, edx
mov ebx, eax
mov rax, qword [rsp + 0x90]
mov ebp, dword [rax + rdi]
mov rax, qword [rsp + 0x70]
mov edi, dword [rax + rdi]
lea eax, [rdi + r8 - 1]
mov dword [rsp + 0x6c], edi
sub eax, ebp
div edi
mov dword [rsp + 0x68], eax
test ebx, ebx
je 0x2e3c5e180
test eax, eax
je 0x2e3c5e180
mov edi, eax
mov eax, dword [rcx + 8]
mov edx, dword [rsp + 0xb4]
mov dword [rsp + 0x20], ebx
mov dword [rsp + 0x28], edi
mov r9d, dword [rsp + 0xa4]
imul eax, ebx
mov dword [rsp + 0x30], edx
mov r8d, dword [rsp + 0xb0]
mov rcx, qword [rsp + 0x18c0]
imul eax, edx
mov rdx, qword [rsp + 0xa8]
add eax, 7
sar eax, 3
add eax, 1
imul eax, edi
mov dword [rsp + 0xc0], eax
mov eax, dword [rsp + 0x54]
mov dword [rsp + 0x38], eax
call fcn.2e3c50e80
test eax, eax
je 0x2e3c5f960
mov rax, qword [rsp + 0x18c0]
mov rdx, qword [rax + 0x18]
mov qword [rsp + 0xb8], rdx
test edi, edi
jle 0x2e3c5e3b8
test ebx, ebx
jle 0x2e3c5e3b8
imul r12d, r13d
mov eax, ebx
mov qword [rsp + 0x60], rdx
imul eax, r13d
mov dword [rsp + 0x58], 0
imul esi, r13d
mov dword [rsp + 0x50], ebx
movsxd rdi, r12d
cdqe
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x80], rax
movsxd rax, esi
mov r12, rax
nop dword [rax]
mov rax, qword [rsp + 0x18c0]
mov rdi, qword [rsp + 0x60]
xor r15d, r15d
mov rbx, qword [rsp + 0x78]
mov rsi, qword [rax]
mov rax, r14
mov r14, rdi
mov rdi, rbx
mov rbx, rax
nop dword [rax]
mov ecx, dword [rsi]
mov rdx, r14
mov r8, rbx
add r15d, 1
add r14, rbx
imul ecx, r13d
imul ecx, ebp
add rcx, rdi
add rcx, qword [rsp + 0x40]
add rdi, r12
call sub.msvcrt.dll_memcpy
cmp dword [rsp + 0x50], r15d
jne 0x2e3c5e368
add dword [rsp + 0x58], 1
mov rdx, qword [rsp + 0x80]
mov r14, rbx
add qword [rsp + 0x60], rdx
mov eax, dword [rsp + 0x58]
add ebp, dword [rsp + 0x6c]
cmp dword [rsp + 0x68], eax
jne 0x2e3c5e340
mov rcx, qword [rsp + 0xb8]
call sub.msvcrt.dll_free
mov eax, dword [rsp + 0xc0]
add qword [rsp + 0xa8], rax
sub dword [rsp + 0xb0], eax
jmp 0x2e3c5e180
cmp eax, 0x504c5445
je 0x2e3c5e680
cmp eax, 0x74524e53
jne 0x2e3c5e620
test r14d, r14d
jne 0x2e3c5efa7
cmp qword [r13 + 8], 0
jne 0x2e3c5f32d
cmp byte [rsp + 0x40], 0
jne 0x2e3c5e9c0
mov eax, dword [r15 + 8]
test al, 1
je 0x2e3c5f48c
lea edx, [rax + rax]
cmp edx, r12d
jne 0x2e3c5f3ad
cmp dword [r13 + 0x20], 0x10
je 0x2e3c5e830
xor ebx, ebx
lea rsi, [rsp + 0x387]
test eax, eax
jle 0x2e3c5e471
mov rcx, r15
call fcn.2e3c5b080
mov rcx, r15
call fcn.2e3c5b080
movsxd rdx, dword [r13 + 0x20]
lea rcx, [0x2e3ed44a8]
mul byte [rcx + rdx]
mov byte [rsi + rbx], al
add rbx, 1
cmp dword [r15 + 8], ebx
jg 0x2e3c5e446
mov byte [rsp + 0xa3], 1
nop dword [rax]
mov rcx, r15
call fcn.2e3c5b080
mov rcx, r15
call fcn.2e3c5b080
mov rcx, r15
call fcn.2e3c5b080
mov rcx, r15
call fcn.2e3c5b080
jmp 0x2e3c5de50
cmp eax, 0x43674249
jne 0x2e3c5e620
mov dword [rsp + 0x5c], 1
test r12d, r12d
je 0x2e3c5e480
js 0x2e3c5e918
cmp qword [r15 + 0x10], 0
mov rax, qword [r15 + 0xc0]
je 0x2e3c5e4ea
mov rcx, qword [r15 + 0xc8]
mov rdx, rcx
sub rdx, rax
cmp r12d, edx
jg 0x2e3c5ea20
movsxd r9, r12d
mov dword [rsp + 0x5c], 1
add rax, r9
mov qword [r15 + 0xc0], rax
jmp 0x2e3c5e480
test r14d, r14d
jne 0x2e3c5efa7
cmp byte [rsp + 0x40], 0
je 0x2e3c5e520
test edi, edi
je 0x2e3c5f363
cmp dword [rsp + 0x18c8], 2
je 0x2e3c5f37e
mov eax, dword [rsp + 0x50]
lea ebx, [rax + r12]
cmp ebx, eax
jl 0x2e3c5e716
mov eax, dword [rsp + 0x48]
mov rcx, qword [r13 + 8]
cmp ebx, eax
ja 0x2e3c5e8a0
mov eax, dword [rsp + 0x50]
mov rdx, qword [r15 + 0xc0]
add rcx, rax
cmp qword [r15 + 0x10], 0
mov rax, qword [r15 + 0xc8]
je 0x2e3c5e579
mov rsi, rax
sub rsi, rdx
cmp r12d, esi
jg 0x2e3c5ea55
movsxd r12, r12d
lea r8, [rdx + r12]
cmp rax, r8
jae 0x2e3c5e9a8
lea rcx, [0x2e3e69480]
lea rdi, str.outofdata
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
test r14d, r14d
je 0x2e3c5f2f4
cmp r12d, 0xd
jne 0x2e3c5f30f
mov rcx, r15
call fcn.2e3c4eda0
mov rcx, r15
mov dword [r15], eax
call fcn.2e3c4eda0
mov dword [r15 + 4], eax
cmp eax, 0x1000000
ja 0x2e3c5f07f
cmp dword [r15], 0x1000000
ja 0x2e3c5f09d
mov rcx, r15
call fcn.2e3c5b080
movzx edx, al
mov dword [r13 + 0x20], edx
cmp al, 0x10
jbe 0x2e3c5e720
lea rcx, [0x2e3e69480]
xor r14d, r14d
call fcn.2e3e59960
lea rdx, str.1_2_4_8_16_bit_only
mov qword [rax], rdx
jmp 0x2e3c5da09
test r14d, r14d
jne 0x2e3c5e700
test eax, 0x20000000
je 0x2e3c5f278
test r12d, r12d
je 0x2e3c5e480
js 0x2e3c5e918
cmp qword [r15 + 0x10], 0
mov rax, qword [r15 + 0xc0]
je 0x2e3c5e667
mov rcx, qword [r15 + 0xc8]
mov rdx, rcx
sub rdx, rax
cmp r12d, edx
jg 0x2e3c5ea20
movsxd r9, r12d
add rax, r9
mov qword [r15 + 0xc0], rax
jmp 0x2e3c5e480
test r14d, r14d
jne 0x2e3c5e700
cmp r12d, 0x300
ja 0x2e3c5f348
mov eax, 0xaaaaaaab
mov edi, r12d
imul rdi, rax
shr rdi, 0x21
lea eax, [rdi + rdi*2]
cmp eax, r12d
jne 0x2e3c5f392
xor ebx, ebx
lea rsi, [rsp + 0x3f0]
cmp eax, 2
jbe 0x2e3c5ef05
nop dword [rax]
mov rcx, r15
call fcn.2e3c5b080
mov rcx, r15
mov byte [rsi + rbx*4], al
call fcn.2e3c5b080
mov rcx, r15
mov byte [rsi + rbx*4 + 1], al
call fcn.2e3c5b080
mov byte [rsi + rbx*4 + 3], 0xff
mov byte [rsi + rbx*4 + 2], al
add rbx, 1
cmp edi, ebx
ja 0x2e3c5e6c8
jmp 0x2e3c5e480
lea rcx, [0x2e3e69480]
lea rdi, str.first_not_IHDR
call fcn.2e3e59960
mov qword [rax], rdi
xor r14d, r14d
jmp 0x2e3c5da09
mov rdx, 0xfffffffffffefee9
bt rdx, rax
jb 0x2e3c5e601
mov rcx, r15
call fcn.2e3c5b080
mov ebx, eax
movzx eax, al
mov dword [rsp + 0x54], eax
cmp eax, 6
jg 0x2e3c5efc5
cmp dword [rsp + 0x54], 3
je 0x2e3c5e990
test bl, 1
jne 0x2e3c5efc5
mov rcx, r15
call fcn.2e3c5b080
test al, al
jne 0x2e3c5f3c8
mov rcx, r15
call fcn.2e3c5b080
test al, al
jne 0x2e3c5f3e6
mov rcx, r15
call fcn.2e3c5b080
movzx eax, al
mov dword [rsp + 0x58], eax
cmp eax, 1
jg 0x2e3c5f404
mov ecx, dword [r15]
test ecx, ecx
je 0x2e3c5efe3
mov r8d, dword [r15 + 4]
test r8d, r8d
je 0x2e3c5efe3
cmp byte [rsp + 0x40], 0
jne 0x2e3c5e808
and ebx, 2
mov eax, 3
mov r9d, dword [rsp + 0x54]
cmovne r14d, eax
mov eax, 0x40000000
xor edx, edx
sar r9d, 2
div ecx
add r9d, r14d
xor edx, edx
mov dword [r15 + 8], r9d
div r9d
cmp r8d, eax
ja 0x2e3c5f09d
cmp dword [rsp + 0x18c8], 2
jne 0x2e3c5e822
nop dword [rax + rax]
mov r14d, 1
jmp 0x2e3c5da09
mov eax, 0x10000000
xor edx, edx
mov dword [r15 + 8], 1
div ecx
cmp r8d, eax
ja 0x2e3c5f07f
xor r14d, r14d
jmp 0x2e3c5e480
mov byte [rsp + 0xa3], 1
test eax, eax
jle 0x2e3c5e480
xor ebp, ebp
lea rsi, [rsp + 0x38a]
mov rcx, r15
call fcn.2e3c5b080
mov rcx, r15
movzx ebx, al
call fcn.2e3c5b080
shl ebx, 8
movzx eax, al
add ebx, eax
mov word [rsi + rbp*2], bx
add rbp, 1
cmp dword [r15 + 8], ebp
jg 0x2e3c5e84a
jmp 0x2e3c5e471
lea rcx, [0x2e3e69480]
xor r14d, r14d
call fcn.2e3e59960
lea rdx, [0x2e3ed3af6]
mov qword [rax], rdx
jmp 0x2e3c5da09
test eax, eax
jne 0x2e3c5e8c0
mov eax, 0x1000
cmp r12d, eax
cmovae eax, r12d
mov dword [rsp + 0x48], eax
cmp ebx, eax
jbe 0x2e3c5e8ca
nop dword [rax + rax]
add eax, eax
cmp ebx, eax
ja 0x2e3c5e8c0
mov dword [rsp + 0x48], eax
mov edx, dword [rsp + 0x48]
call sub.msvcrt.dll_realloc
mov rcx, rax
test rax, rax
je 0x2e3c5fa7b
mov qword [r13 + 8], rax
jmp 0x2e3c5e54e
movq xmm0, rdx
mov dword [r15 + 0x30], 0
punpcklqdq xmm0, xmm0
mov byte [r15 + 0x38], 0
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5d9f0
mov rax, qword [r15 + 0xc8]
mov qword [r15 + 0xc0], rax
jmp 0x2e3c5e480
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
je 0x2e3c5dd50
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rax, rbx
movq xmm4, rax
punpcklqdq xmm0, xmm4
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5da7e
cmp dword [r13 + 0x20], 0x10
je 0x2e3c5f985
mov byte [rsp + 0x40], 3
jmp 0x2e3c5e75f
mov r8, r12
call sub.msvcrt.dll_memcpy
add qword [r15 + 0xc0], r12
mov dword [rsp + 0x50], ebx
jmp 0x2e3c5e480
cmp dword [rsp + 0x18c8], 2
je 0x2e3c5f972
test edi, edi
je 0x2e3c5f9a3
cmp edi, r12d
jb 0x2e3c5f3ad
test r12d, r12d
je 0x2e3c5ea14
lea eax, [r12 - 1]
lea rbx, [rsp + 0x3f3]
lea rsi, [rsp + rax*4 + 0x3f7]
nop dword [rax]
mov rcx, r15
add rbx, 4
call fcn.2e3c5b080
mov byte [rbx - 4], al
cmp rsi, rbx
jne 0x2e3c5ea00
mov byte [rsp + 0x40], 4
jmp 0x2e3c5e480
sub r12d, edx
mov qword [r15 + 0xc0], rcx
mov rcx, qword [r15 + 0x28]
mov edx, r12d
call qword [r15 + 0x18]
jmp 0x2e3c5e480
lea rcx, [0x2e3e69480]
lea rdi, str.no_IDAT
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
movsxd rbp, esi
sub r12d, esi
mov r8, rbp
call sub.msvcrt.dll_memcpy
mov rcx, qword [r15 + 0x28]
mov r8d, r12d
lea rdx, [rax + rbp]
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc8]
mov qword [r15 + 0xc0], rdx
cmp r12d, eax
je 0x2e3c5e9b7
jmp 0x2e3c5e589
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rax, rbx
movq xmm5, rax
punpcklqdq xmm0, xmm5
movups xmmword [r15 + 0xc0], xmm0
jmp 0x2e3c5dd86
mov r13, qword [rsp + 0x18c0]
mov rax, qword [rsp + 0x40]
movzx r12d, byte [rsp + 0xc7]
mov r15, qword [rsp + 0xc8]
mov qword [r13 + 0x18], rax
cmp byte [rsp + 0xa3], 0
je 0x2e3c5edfb
mov ecx, dword [r15 + 0xc]
mov rdx, qword [r13]
mov rbx, qword [r13 + 0x18]
lea eax, [rcx - 2]
mov esi, dword [rdx]
and eax, 0xfffffffd
imul esi, dword [rdx + 4]
cmp dword [r13 + 0x20], 0x10
je 0x2e3c5f0bb
test eax, eax
jne 0x2e3c5f001
cmp ecx, 2
jne 0x2e3c5f01b
test esi, esi
je 0x2e3c5edfb
lea r8d, [rsi - 1]
movzx edx, byte [rsp + 0x387]
cmp r8d, 0xf
jbe 0x2e3c5ecc3
mov ecx, r8d
movd xmm0, edx
pxor xmm4, xmm4
mov rax, rbx
shr ecx, 4
punpcklbw xmm0, xmm0
movdqa xmm3, xmmword [0x2e3ed4860]
sub ecx, 1
punpcklwd xmm0, xmm0
shl rcx, 5
pshufd xmm2, xmm0, 0
lea r9, [rbx + rcx + 0x20]
movdqu xmm0, xmmword [rax]
movdqu xmm1, xmmword [rax + 0x10]
add rax, 0x20
pand xmm0, xmm3
pand xmm1, xmm3
packuswb xmm0, xmm1
pcmpeqb xmm0, xmm2
pcmpeqb xmm0, xmm4
movd ecx, xmm0
mov byte [rax - 0x1f], cl
movaps xmmword [rsp + 0x370], xmm0
movzx ecx, byte [rsp + 0x371]
mov byte [rax - 0x1d], cl
movaps xmmword [rsp + 0x360], xmm0
movzx ecx, byte [rsp + 0x362]
mov byte [rax - 0x1b], cl
movaps xmmword [rsp + 0x350], xmm0
movzx ecx, byte [rsp + 0x353]
mov byte [rax - 0x19], cl
movaps xmmword [rsp + 0x340], xmm0
movzx ecx, byte [rsp + 0x344]
mov byte [rax - 0x17], cl
movaps xmmword [rsp + 0x330], xmm0
movzx ecx, byte [rsp + 0x335]
mov byte [rax - 0x15], cl
movaps xmmword [rsp + 0x320], xmm0
movzx ecx, byte [rsp + 0x326]
mov byte [rax - 0x13], cl
movaps xmmword [rsp + 0x310], xmm0
movzx ecx, byte [rsp + 0x317]
mov byte [rax - 0x11], cl
movaps xmmword [rsp + 0x300], xmm0
movzx ecx, byte [rsp + 0x308]
mov byte [rax - 0xf], cl
movaps xmmword [rsp + 0x2f0], xmm0
movzx ecx, byte [rsp + 0x2f9]
mov byte [rax - 0xd], cl
movaps xmmword [rsp + 0x2e0], xmm0
movzx ecx, byte [rsp + 0x2ea]
mov byte [rax - 0xb], cl
movaps xmmword [rsp + 0x2d0], xmm0
movzx ecx, byte [rsp + 0x2db]
mov byte [rax - 9], cl
movaps xmmword [rsp + 0x2c0], xmm0
movzx ecx, byte [rsp + 0x2cc]
mov byte [rax - 7], cl
movaps xmmword [rsp + 0x2b0], xmm0
movzx ecx, byte [rsp + 0x2bd]
mov byte [rax - 5], cl
movaps xmmword [rsp + 0x2a0], xmm0
movzx ecx, byte [rsp + 0x2ae]
mov byte [rax - 3], cl
movaps xmmword [rsp + 0x290], xmm0
movzx ecx, byte [rsp + 0x29f]
mov byte [rax - 1], cl
cmp rax, r9
jne 0x2e3c5eb69
mov eax, r8d
and eax, 0xfffffff0
mov ecx, eax
lea rbx, [rbx + rcx*2]
cmp byte [rbx], dl
setne cl
neg ecx
mov byte [rbx + 1], cl
lea ecx, [rax + 1]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 2], dl
setne cl
neg ecx
mov byte [rbx + 3], cl
lea ecx, [rax + 2]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 4], dl
setne cl
neg ecx
mov byte [rbx + 5], cl
lea ecx, [rax + 3]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 6], dl
setne cl
neg ecx
mov byte [rbx + 7], cl
lea ecx, [rax + 4]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 8], dl
setne cl
neg ecx
mov byte [rbx + 9], cl
lea ecx, [rax + 5]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0xa], dl
setne cl
neg ecx
mov byte [rbx + 0xb], cl
lea ecx, [rax + 6]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0xc], dl
setne cl
neg ecx
mov byte [rbx + 0xd], cl
lea ecx, [rax + 7]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0xe], dl
setne cl
neg ecx
mov byte [rbx + 0xf], cl
lea ecx, [rax + 8]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0x10], dl
setne cl
neg ecx
mov byte [rbx + 0x11], cl
lea ecx, [rax + 9]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0x12], dl
setne cl
neg ecx
mov byte [rbx + 0x13], cl
lea ecx, [rax + 0xa]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0x14], dl
setne cl
neg ecx
mov byte [rbx + 0x15], cl
lea ecx, [rax + 0xb]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0x16], dl
setne cl
neg ecx
mov byte [rbx + 0x17], cl
lea ecx, [rax + 0xc]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0x18], dl
setne cl
neg ecx
mov byte [rbx + 0x19], cl
lea ecx, [rax + 0xd]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0x1a], dl
setne cl
neg ecx
mov byte [rbx + 0x1b], cl
lea ecx, [rax + 0xe]
cmp esi, ecx
jbe 0x2e3c5edfb
cmp byte [rbx + 0x1c], dl
setne cl
add eax, 0xf
neg ecx
mov byte [rbx + 0x1d], cl
cmp esi, eax
jbe 0x2e3c5edfb
cmp byte [rbx + 0x1e], dl
setne al
neg eax
mov byte [rbx + 0x1f], al
mov ebx, dword [rsp + 0x5c]
test ebx, ebx
je 0x2e3c5ee3a
lea rcx, [0x2e3e693a0]
call fcn.2e3e59960
mov r10d, dword [rax]
test r10d, r10d
je 0x2e3c5f06a
lea rcx, [0x2e3e693c0]
call fcn.2e3e59960
mov r9d, dword [rax]
test r9d, r9d
je 0x2e3c5ee3a
cmp dword [r15 + 0xc], 2
jg 0x2e3c5f4a7
test r12b, r12b
je 0x2e3c5ef75
movzx edi, r12b
cmp dword [rsp + 0x18d0], 3
mov dword [r15 + 8], edi
cmovge edi, dword [rsp + 0x18d0]
mov dword [r15 + 0xc], edi
mov rdx, qword [r13]
mov r12, qword [r13 + 0x18]
mov eax, dword [rdx + 4]
imul eax, dword [rdx]
mov esi, eax
test eax, eax
js 0x2e3c5e880
mov eax, 0x7fffffff
cdq
idiv edi
cmp eax, esi
jl 0x2e3c5e880
mov ecx, esi
imul ecx, edi
movsxd rcx, ecx
call sub.msvcrt.dll_malloc
mov rbx, rax
test rax, rax
je 0x2e3c5e880
cmp edi, 3
je 0x2e3c5f29b
mov ecx, esi
xor edx, edx
test esi, esi
je 0x2e3c5eed5
nop dword [rax]
movzx eax, byte [r12 + rdx]
shl eax, 2
cdqe
mov eax, dword [rsp + rax + 0x3f0]
mov dword [rbx + rdx*4], eax
add rdx, 1
cmp rdx, rcx
jne 0x2e3c5eeb8
mov rcx, r12
call sub.msvcrt.dll_free
mov qword [r13 + 0x18], rbx
mov rcx, qword [r13 + 0x10]
mov r14d, 1
call sub.msvcrt.dll_free
mov qword [r13 + 0x10], 0
mov rcx, r15
call fcn.2e3c4eda0
jmp 0x2e3c5da09
xor edi, edi
jmp 0x2e3c5e480
mov eax, dword [rsp + 0x54]
mov dword [rsp + 0x30], edx
mov rcx, r13
mov dword [rsp + 0x28], r8d
mov r9d, dword [rsp + 0xa4]
mov r8d, esi
mov dword [rsp + 0x38], eax
mov rdx, qword [rsp + 0xa8]
mov dword [rsp + 0x20], ebx
call fcn.2e3c50e80
test eax, eax
je 0x2e3c5e716
jmp 0x2e3c5ead7
cmp dword [rsp + 0x18d0], 3
je 0x2e3c5e017
test r12b, r12b
jne 0x2e3c5e017
mov eax, dword [rsp + 0x18d0]
mov dword [rsp + 0xa4], eax
mov edi, eax
jmp 0x2e3c5e030
cmp byte [rsp + 0xa3], 0
je 0x2e3c5eee1
add dword [r15 + 8], 1
jmp 0x2e3c5eee1
mov rcx, qword [rsp + 0x810]
call sub.msvcrt.dll_free
mov qword [r13 + 0x10], 0
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
xor r14d, r14d
call fcn.2e3e59960
lea rdx, str.first_not_IHDR
mov qword [rax], rdx
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
lea rdi, str.bad_ctype
xor r14d, r14d
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
xor r14d, r14d
call fcn.2e3e59960
lea rdx, str.0_pixel_image
mov qword [rax], rdx
jmp 0x2e3c5da09
mov r8d, 0x12fb
lea rdx, [0x2e3ed3a38]
lea rcx, str.out_n__2__out_n__4
call qword [sym.imp.msvcrt.dll__assert]
test esi, esi
je 0x2e3c5edfb
movzx edx, byte [rsp + 0x387]
movzx ecx, byte [rsp + 0x388]
lea rax, [rbx + rsi*4]
movzx r8d, byte [rsp + 0x389]
jmp 0x2e3c5f055
add rbx, 4
cmp rbx, rax
je 0x2e3c5edfb
cmp byte [rbx], dl
jne 0x2e3c5f048
cmp byte [rbx + 1], cl
jne 0x2e3c5f048
cmp byte [rbx + 2], r8b
jne 0x2e3c5f048
mov byte [rbx + 3], 0
jmp 0x2e3c5f048
mov r8d, dword [0x2e3f376c4]
test r8d, r8d
je 0x2e3c5ee3a
jmp 0x2e3c5ee2f
lea rcx, [0x2e3e69480]
xor r14d, r14d
call fcn.2e3e59960
lea rdx, [0x2e3ed3b29]
mov qword [rax], rdx
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
lea rdi, [0x2e3ed3b29]
xor r14d, r14d
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
test eax, eax
jne 0x2e3c5f422
cmp ecx, 2
jne 0x2e3c5f43c
test esi, esi
je 0x2e3c5edfb
lea ecx, [rsi - 1]
movzx edx, word [rsp + 0x38a]
cmp ecx, 7
jbe 0x2e3c5f1af
movd xmm0, edx
lea rax, [rbx + 2]
pxor xmm4, xmm4
mov r8d, ecx
shr r8d, 3
punpcklwd xmm0, xmm0
sub r8d, 1
pshufd xmm1, xmm0, 0
shl r8, 5
lea r9, [rbx + r8 + 0x22]
movdqu xmm0, xmmword [rax - 2]
movdqu xmm5, xmmword [rax + 0xe]
add rax, 0x20
movdqa xmm2, xmm0
punpcklwd xmm0, xmm5
punpckhwd xmm2, xmm5
movdqa xmm3, xmm0
punpckhwd xmm3, xmm2
punpcklwd xmm0, xmm2
punpcklwd xmm0, xmm3
pcmpeqw xmm0, xmm1
pcmpeqw xmm0, xmm4
pextrw r8d, xmm0, 0
mov word [rax - 0x20], r8w
pextrw r8d, xmm0, 1
mov word [rax - 0x1c], r8w
pextrw r8d, xmm0, 2
mov word [rax - 0x18], r8w
pextrw r8d, xmm0, 3
mov word [rax - 0x14], r8w
pextrw r8d, xmm0, 4
mov word [rax - 0x10], r8w
pextrw r8d, xmm0, 5
mov word [rax - 0xc], r8w
pextrw r8d, xmm0, 6
mov word [rax - 8], r8w
pextrw r8d, xmm0, 7
mov word [rax - 4], r8w
cmp rax, r9
jne 0x2e3c5f111
mov eax, ecx
and eax, 0xfffffff8
mov ecx, eax
lea rbx, [rbx + rcx*4]
xor ecx, ecx
cmp word [rbx], dx
setne cl
neg ecx
mov word [rbx + 2], cx
lea ecx, [rax + 1]
cmp esi, ecx
jbe 0x2e3c5edfb
xor ecx, ecx
cmp word [rbx + 4], dx
setne cl
neg ecx
mov word [rbx + 6], cx
lea ecx, [rax + 2]
cmp esi, ecx
jbe 0x2e3c5edfb
xor ecx, ecx
cmp word [rbx + 8], dx
setne cl
neg ecx
mov word [rbx + 0xa], cx
lea ecx, [rax + 3]
cmp esi, ecx
jbe 0x2e3c5edfb
xor ecx, ecx
cmp word [rbx + 0xc], dx
setne cl
neg ecx
mov word [rbx + 0xe], cx
lea ecx, [rax + 4]
cmp esi, ecx
jbe 0x2e3c5edfb
xor ecx, ecx
cmp word [rbx + 0x10], dx
setne cl
neg ecx
mov word [rbx + 0x12], cx
lea ecx, [rax + 5]
cmp esi, ecx
jbe 0x2e3c5edfb
xor ecx, ecx
cmp word [rbx + 0x14], dx
setne cl
neg ecx
mov word [rbx + 0x16], cx
lea ecx, [rax + 6]
cmp esi, ecx
jbe 0x2e3c5edfb
xor ecx, ecx
cmp word [rbx + 0x18], dx
setne cl
add eax, 7
neg ecx
mov word [rbx + 0x1a], cx
cmp esi, eax
jbe 0x2e3c5edfb
xor eax, eax
cmp word [rbx + 0x1c], dx
setne al
neg eax
mov word [rbx + 0x1e], ax
jmp 0x2e3c5edfb
lea rcx, [0x2e3e69480]
bswap eax
mov dword [str.XXXX_PNG_chunk_not_known], eax
call fcn.2e3e59960
lea rdx, str.XXXX_PNG_chunk_not_known
mov qword [rax], rdx
jmp 0x2e3c5da09
test esi, esi
je 0x2e3c5eed5
mov eax, esi
mov r9, r12
mov rdx, rbx
lea r8, [rax + rax*2]
add r8, rbx
nop word [rax + rax]
movzx eax, byte [r9]
add rdx, 3
add r9, 1
shl eax, 2
cdqe
movzx ecx, byte [rsp + rax + 0x3f0]
mov byte [rdx - 3], cl
movzx ecx, byte [rsp + rax + 0x3f1]
movzx eax, byte [rsp + rax + 0x3f2]
mov byte [rdx - 2], cl
mov byte [rdx - 1], al
cmp rdx, r8
jne 0x2e3c5f2b8
jmp 0x2e3c5eed5
lea rcx, [0x2e3e69480]
lea rdi, str.multiple_IHDR
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
lea rdi, str.bad_IHDR_len
xor r14d, r14d
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
lea rdi, str.tRNS_after_IDAT
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
call fcn.2e3e59960
lea rdx, str.invalid_PLTE
mov qword [rax], rdx
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
lea rdi, str.no_PLTE
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
movzx eax, byte [rsp + 0x40]
mov r14d, 1
mov dword [r15 + 8], eax
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
lea rdi, str.invalid_PLTE
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
lea rdi, str.bad_tRNS_len
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
xor r14d, r14d
call fcn.2e3e59960
lea rdx, str.bad_comp_method
mov qword [rax], rdx
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
lea rdi, str.bad_filter_method
xor r14d, r14d
call fcn.2e3e59960
mov qword [rax], rdi
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
xor r14d, r14d
call fcn.2e3e59960
lea rdx, str.bad_interlace_method
mov qword [rax], rdx
jmp 0x2e3c5da09
mov r8d, 0x1314
lea rdx, [0x2e3ed3a38]
lea rcx, str.out_n__2__out_n__4
call qword [sym.imp.msvcrt.dll__assert]
test esi, esi
je 0x2e3c5edfb
movzx edx, word [rsp + 0x38a]
movzx ecx, word [rsp + 0x38c]
lea rax, [rbx + rsi*8]
movzx r8d, word [rsp + 0x38e]
jmp 0x2e3c5f470
add rbx, 8
cmp rbx, rax
je 0x2e3c5edfb
cmp word [rbx], dx
jne 0x2e3c5f463
cmp word [rbx + 2], cx
jne 0x2e3c5f463
cmp word [rbx + 4], r8w
jne 0x2e3c5f463
xor r11d, r11d
mov word [rbx + 6], r11w
jmp 0x2e3c5f463
lea rcx, [0x2e3e69480]
call fcn.2e3e59960
lea rdx, str.tRNS_with_alpha
mov qword [rax], rdx
jmp 0x2e3c5da09
mov rax, qword [r13]
mov rbx, qword [r13 + 0x18]
mov esi, dword [rax]
imul esi, dword [rax + 4]
mov eax, dword [rax + 0xc]
cmp eax, 3
je 0x2e3c5fa51
cmp eax, 4
je 0x2e3c5f4e0
mov r8d, 0x1380
lea rdx, [0x2e3ed3a38]
lea rcx, str.s__img_out_n__4
call qword [sym.imp.msvcrt.dll__assert]
lea rcx, [0x2e3e693e0]
call fcn.2e3e59960
mov ecx, dword [rax]
test ecx, ecx
je 0x2e3c5f9be
lea rcx, [0x2e3e69400]
call fcn.2e3e59960
mov edx, dword [rax]
test edx, edx
jne 0x2e3c5f9cc
test esi, esi
je 0x2e3c5ee3a
lea edx, [rsi - 1]
cmp edx, 0xf
jbe 0x2e3c5fa96
mov ecx, edx
mov rax, rbx
shr ecx, 4
sub ecx, 1
shl rcx, 6
lea rcx, [rbx + rcx + 0x40]
movdqu xmm3, xmmword [rax]
movdqu xmm2, xmmword [rax + 0x10]
add rax, 0x40
movdqu xmm0, xmmword [rax - 0x10]
movdqu xmm1, xmmword [rax - 0x20]
movaps xmmword [rsp + 0x280], xmm3
movzx r8d, byte [rsp + 0x282]
mov byte [rax - 0x40], r8b
movaps xmmword [rsp + 0x270], xmm3
movzx r8d, byte [rsp + 0x276]
mov byte [rax - 0x3c], r8b
movaps xmmword [rsp + 0x260], xmm3
movzx r8d, byte [rsp + 0x26a]
mov byte [rax - 0x38], r8b
movaps xmmword [rsp + 0x250], xmm3
movzx r8d, byte [rsp + 0x25e]
mov byte [rax - 0x34], r8b
movaps xmmword [rsp + 0x240], xmm2
movzx r8d, byte [rsp + 0x242]
mov byte [rax - 0x30], r8b
movaps xmmword [rsp + 0x230], xmm2
movzx r8d, byte [rsp + 0x236]
mov byte [rax - 0x2c], r8b
movaps xmmword [rsp + 0x220], xmm2
movzx r8d, byte [rsp + 0x22a]
mov byte [rax - 0x28], r8b
movaps xmmword [rsp + 0x210], xmm2
movzx r8d, byte [rsp + 0x21e]
mov byte [rax - 0x24], r8b
movaps xmmword [rsp + 0x200], xmm1
movzx r8d, byte [rsp + 0x202]
mov byte [rax - 0x20], r8b
movaps xmmword [rsp + 0x1f0], xmm1
movzx r8d, byte [rsp + 0x1f6]
mov byte [rax - 0x1c], r8b
movaps xmmword [rsp + 0x1e0], xmm1
movzx r8d, byte [rsp + 0x1ea]
mov byte [rax - 0x18], r8b
movaps xmmword [rsp + 0x1d0], xmm1
movzx r8d, byte [rsp + 0x1de]
mov byte [rax - 0x14], r8b
movaps xmmword [rsp + 0x1c0], xmm0
movzx r8d, byte [rsp + 0x1c2]
mov byte [rax - 0x10], r8b
movaps xmmword [rsp + 0x1b0], xmm0
movzx r8d, byte [rsp + 0x1b6]
mov byte [rax - 0xc], r8b
movaps xmmword [rsp + 0x1a0], xmm0
movzx r8d, byte [rsp + 0x1aa]
mov byte [rax - 8], r8b
movaps xmmword [rsp + 0x190], xmm0
movzx r8d, byte [rsp + 0x19e]
mov byte [rax - 4], r8b
movd r8d, xmm3
mov byte [rax - 0x3e], r8b
movaps xmmword [rsp + 0x180], xmm3
movzx r8d, byte [rsp + 0x184]
mov byte [rax - 0x3a], r8b
movaps xmmword [rsp + 0x170], xmm3
movzx r8d, byte [rsp + 0x178]
mov byte [rax - 0x36], r8b
movaps xmmword [rsp + 0x160], xmm3
movzx r8d, byte [rsp + 0x16c]
mov byte [rax - 0x32], r8b
movd r8d, xmm2
mov byte [rax - 0x2e], r8b
movaps xmmword [rsp + 0x150], xmm2
movzx r8d, byte [rsp + 0x154]
mov byte [rax - 0x2a], r8b
movaps xmmword [rsp + 0x140], xmm2
movzx r8d, byte [rsp + 0x148]
mov byte [rax - 0x26], r8b
movaps xmmword [rsp + 0x130], xmm2
movzx r8d, byte [rsp + 0x13c]
mov byte [rax - 0x22], r8b
movd r8d, xmm1
mov byte [rax - 0x1e], r8b
movaps xmmword [rsp + 0x120], xmm1
movzx r8d, byte [rsp + 0x124]
mov byte [rax - 0x1a], r8b
movaps xmmword [rsp + 0x110], xmm1
movzx r8d, byte [rsp + 0x118]
mov byte [rax - 0x16], r8b
movaps xmmword [rsp + 0x100], xmm1
movzx r8d, byte [rsp + 0x10c]
mov byte [rax - 0x12], r8b
movd r8d, xmm0
mov byte [rax - 0xe], r8b
movaps xmmword [rsp + 0xf0], xmm0
movzx r8d, byte [rsp + 0xf4]
mov byte [rax - 0xa], r8b
movaps xmmword [rsp + 0xe0], xmm0
movzx r8d, byte [rsp + 0xe8]
mov byte [rax - 6], r8b
movaps xmmword [rsp + 0xd0], xmm0
movzx r8d, byte [rsp + 0xdc]
mov byte [rax - 2], r8b
cmp rcx, rax
jne 0x2e3c5f534
mov eax, edx
and eax, 0xfffffff0
mov edx, eax
lea rbx, [rbx + rdx*4]
movzx edx, byte [rbx]
movzx ecx, byte [rbx + 2]
mov byte [rbx + 2], dl
lea edx, [rax + 1]
mov byte [rbx], cl
cmp edx, esi
jae 0x2e3c5ee3a
movzx edx, byte [rbx + 4]
movzx ecx, byte [rbx + 6]
mov byte [rbx + 6], dl
lea edx, [rax + 2]
mov byte [rbx + 4], cl
cmp edx, esi
jae 0x2e3c5ee3a
movzx edx, byte [rbx + 8]
movzx ecx, byte [rbx + 0xa]
mov byte [rbx + 0xa], dl
lea edx, [rax + 3]
mov byte [rbx + 8], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0xc]
movzx ecx, byte [rbx + 0xe]
mov byte [rbx + 0xe], dl
lea edx, [rax + 4]
mov byte [rbx + 0xc], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x10]
movzx ecx, byte [rbx + 0x12]
mov byte [rbx + 0x12], dl
lea edx, [rax + 5]
mov byte [rbx + 0x10], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x14]
movzx ecx, byte [rbx + 0x16]
mov byte [rbx + 0x16], dl
lea edx, [rax + 6]
mov byte [rbx + 0x14], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x18]
movzx ecx, byte [rbx + 0x1a]
mov byte [rbx + 0x1a], dl
lea edx, [rax + 7]
mov byte [rbx + 0x18], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x1c]
movzx ecx, byte [rbx + 0x1e]
mov byte [rbx + 0x1e], dl
lea edx, [rax + 8]
mov byte [rbx + 0x1c], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x20]
movzx ecx, byte [rbx + 0x22]
mov byte [rbx + 0x22], dl
lea edx, [rax + 9]
mov byte [rbx + 0x20], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x24]
movzx ecx, byte [rbx + 0x26]
mov byte [rbx + 0x26], dl
lea edx, [rax + 0xa]
mov byte [rbx + 0x24], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x28]
movzx ecx, byte [rbx + 0x2a]
mov byte [rbx + 0x2a], dl
lea edx, [rax + 0xb]
mov byte [rbx + 0x28], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x2c]
movzx ecx, byte [rbx + 0x2e]
mov byte [rbx + 0x2e], dl
lea edx, [rax + 0xc]
mov byte [rbx + 0x2c], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x30]
movzx ecx, byte [rbx + 0x32]
mov byte [rbx + 0x32], dl
lea edx, [rax + 0xd]
mov byte [rbx + 0x30], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x34]
movzx ecx, byte [rbx + 0x36]
mov byte [rbx + 0x36], dl
lea edx, [rax + 0xe]
mov byte [rbx + 0x34], cl
cmp esi, edx
jbe 0x2e3c5ee3a
movzx edx, byte [rbx + 0x38]
movzx ecx, byte [rbx + 0x3a]
add eax, 0xf
mov byte [rbx + 0x38], cl
mov byte [rbx + 0x3a], dl
cmp esi, eax
jbe 0x2e3c5ee3a
movzx eax, byte [rbx + 0x3c]
movzx edx, byte [rbx + 0x3e]
mov byte [rbx + 0x3e], al
mov byte [rbx + 0x3c], dl
jmp 0x2e3c5ee3a
mov rcx, qword [rsp + 0x40]
mov r14d, eax
call sub.msvcrt.dll_free
jmp 0x2e3c5da09
mov dword [r15 + 8], 4
mov r14d, 1
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
xor r14d, r14d
call fcn.2e3e59960
lea rdx, str.bad_ctype
mov qword [rax], rdx
jmp 0x2e3c5da09
lea rcx, [0x2e3e69480]
call fcn.2e3e59960
lea rdx, str.tRNS_before_PLTE
mov qword [rax], rdx
jmp 0x2e3c5da09
mov eax, dword [0x2e3f376c8]
test eax, eax
je 0x2e3c5f50c
mov eax, esi
lea r8, [rbx + rax*4]
test esi, esi
je 0x2e3c5ee3a
movzx ecx, byte [rbx + 3]
movzx r11d, byte [rbx]
movzx r10d, byte [rbx + 2]
test cl, cl
je 0x2e3c5fa3b
movzx edx, byte [rbx + 1]
mov r9d, ecx
add rbx, 4
shr r9b, 1
mov eax, edx
movzx r9d, r9b
shl eax, 8
sub eax, edx
add eax, r9d
cdq
idiv ecx
mov byte [rbx - 3], al
mov eax, r11d
shl eax, 8
sub eax, r11d
add eax, r9d
cdq
idiv ecx
mov byte [rbx - 2], al
mov eax, r10d
shl eax, 8
sub eax, r10d
add eax, r9d
cdq
idiv ecx
mov byte [rbx - 4], al
cmp rbx, r8
jne 0x2e3c5f9da
jmp 0x2e3c5ee3a
mov byte [rbx + 2], r11b
add rbx, 4
mov byte [rbx - 4], r10b
cmp rbx, r8
jne 0x2e3c5f9da
jmp 0x2e3c5ee3a
test esi, esi
je 0x2e3c5ee3a
lea rax, [rsi + rsi*2]
add rax, rbx
movzx edx, byte [rbx]
movzx ecx, byte [rbx + 2]
add rbx, 3
mov byte [rbx - 3], cl
mov byte [rbx - 1], dl
cmp rbx, rax
jne 0x2e3c5fa60
jmp 0x2e3c5ee3a
lea rcx, [0x2e3e69480]
call fcn.2e3e59960
lea rdx, [0x2e3ed3af6]
mov qword [rax], rdx
jmp 0x2e3c5da09
xor eax, eax
jmp 0x2e3c5f7cf
mov qword [r13 + 0x10], 0
jmp 0x2e3c5da09