Function at 0x430dc0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
push ebx
push esi
xor ecx, ecx
push edi
mov edi, dword [ebp + 0x20]
cmp edi, 0x10
sete cl
inc ecx
mov esi, ecx
imul esi, dword [ebp + 0x14]
mov eax, esi
mov dword [ebp - 8], esi
imul eax, dword [ebp + 0x18]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov ebx, eax
imul ebx, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x34], ecx
mov dword [ebp - 4], ebx
test ecx, ecx
js 0x431d6c
mov eax, dword [ebp + 0x1c]
test eax, eax
js 0x431d6c
je 0x430e2a
xor edx, edx
mov eax, 0x7fffffff
div dword [ebp + 0x1c]
cmp ecx, eax
jg 0x431d6c
mov eax, dword [ebp + 0x1c]
imul ecx, eax
test ecx, ecx
js 0x431d6c
test esi, esi
js 0x431d6c
je 0x430e4f
mov eax, 0x7fffffff
cdq
idiv esi
cmp ecx, eax
jg 0x431d6c
mov eax, dword [ebp - 0x28]
imul eax, dword [ebp + 0x1c]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov ecx, dword [ebp + 8]
add esp, 4
mov dword [ecx + 0xc], eax
test eax, eax
je 0x431d76
mov ecx, dword [ebp - 0x24]
test ecx, ecx
js 0x430eca
mov esi, dword [ebp + 0x18]
test esi, esi
je 0x430e89
xor edx, edx
mov eax, 0x7fffffff
div esi
cmp ecx, eax
jg 0x430eca
imul ecx, esi
mov dword [ebp - 0x18], ecx
test ecx, ecx
js 0x430eca
test edi, edi
js 0x430eca
je 0x430ea6
xor edx, edx
mov eax, 0x7fffffff
div edi
cmp ecx, eax
jg 0x430eca
mov eax, ecx
imul eax, edi
cmp eax, 0x7ffffff8
jg 0x430eca
mov eax, ecx
imul eax, edi
add eax, 7
shr eax, 3
mov dword [ebp - 0x3c], eax
inc eax
imul eax, dword [ebp + 0x1c]
cmp dword [ebp + 0x10], eax
jae 0x430eec
mov ecx, dword [0x4ba108]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebx
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.Corrupt_PNG
xor eax, eax
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x1c]
xor edx, edx
mov dword [ebp - 0x38], edx
test eax, eax
je 0x431993
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 8]
mov eax, edx
imul eax, dword [ebp - 0x28]
mov ecx, dword [ecx + 0xc]
add ecx, eax
mov dword [ebp - 0x54], eax
movzx eax, byte [edi]
inc edi
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x20], eax
cmp eax, 4
ja 0x430eca
cmp esi, 8
jge 0x430f4f
mov ebx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x3c]
cmp esi, ebx
ja 0x430eca
mov eax, dword [ebp + 0x14]
imul eax, ebx
mov ebx, 1
mov dword [ebp - 4], ebx
mov dword [ebp - 0x34], esi
sub eax, esi
add ecx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x14], ecx
mov esi, ecx
sub esi, dword [ebp - 0x28]
mov dword [ebp - 0x10], esi
test edx, edx
jne 0x430f65
movzx eax, byte [eax + 0x4b5158]
mov dword [ebp - 0x20], eax
test ebx, ebx
jle 0x431064
mov eax, esi
mov edx, edi
sub eax, edi
mov esi, ebx
sub ecx, edi
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x30], ecx
nop dword [eax]
cmp dword [ebp - 0x20], 6
ja case.default.0x430f89
mov ebx, dword [ebp - 0x20]
jmp dword [ebx*4 + 0x431d98]
mov ebx, dword [ebp - 4]
inc edx
sub esi, 1
jne 0x430f80
jmp 0x43105e
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x430fa1
jmp 0x43105e
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x430fb7
jmp 0x43105e
mov ebx, dword [ebp - 4]
nop dword [eax]
mov al, byte [eax + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x43105e
mov eax, dword [ebp - 0x1c]
jmp 0x430fd0
mov ebx, dword [ebp - 4]
nop word [eax + eax]
mov al, byte [eax + edx]
lea edx, [edx + 1]
shr al, 1
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x43105e
mov eax, dword [ebp - 0x1c]
jmp 0x430ff0
mov ebx, dword [ebp - 4]
nop dword [eax]
mov cl, byte [eax + edx]
lea edx, [edx + 1]
xor al, al
cmp al, cl
sbb al, al
and al, cl
mov ecx, dword [ebp - 0x30]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x43105e
mov eax, dword [ebp - 0x1c]
jmp 0x431010
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x431035
jmp 0x43105e
mov ebx, dword [ebp - 4]
nop dword [eax + eax]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x431050
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x20]
cmp eax, 8
jne 0x431093
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp - 0x24]
cmp edx, eax
je 0x43107a
mov byte [ecx + edx], 0xff
add edi, edx
add esi, eax
mov edx, edi
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], ecx
jmp 0x4310de
cmp eax, 0x10
jne 0x4310c1
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp + 0x14]
je 0x4310a6
mov word [ecx + ebx], 0xffff
add esi, dword [ebp - 8]
add edi, ebx
add ecx, dword [ebp - 8]
mov edx, edi
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], ecx
jmp 0x4310de
inc edi
inc esi
inc ecx
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], esi
mov edx, edi
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], ecx
cmp eax, 8
jl 0x43163f
mov ebx, dword [ebp - 0x24]
cmp ebx, dword [ebp + 0x14]
mov ebx, dword [ebp - 4]
je 0x43163f
cmp dword [ebp - 0x20], 6
ja case.default.0x4310fc
mov eax, dword [ebp - 0x20]
mov edi, edx
jmp dword [eax*4 + 0x431db4]
mov edx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x10]
dec edx
mov eax, dword [ebp - 8]
mov edi, esi
mov dword [ebp - 0x2c], edx
cmp edx, 1
jb case.default.0x4310fc
nop dword [eax + eax]
test ebx, ebx
jle 0x431148
mov eax, edi
mov esi, ebx
sub eax, ecx
mov edx, ecx
mov dword [ebp - 0x30], eax
mov ebx, eax
mov al, byte [ebx + edx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x431131
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x2c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
sub edx, 1
mov dword [ebp - 0x2c], edx
jne 0x431120
jmp case.default.0x4310fc
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x2c], esi
cmp esi, 1
jb case.default.0x4310fc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x20], edx
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x4311af
mov dword [ebp - 0x30], edi
sub edi, ecx
nop dword [eax + eax]
mov ebx, dword [ebp - 0x20]
lea edx, [esi + ecx]
mov al, byte [edx + edi]
add al, byte [ebx + esi]
inc esi
mov ebx, dword [ebp - 4]
mov byte [edx], al
cmp esi, ebx
jl 0x431190
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x20]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x20], edx
sub dword [ebp - 0x2c], 1
jne 0x431180
jmp case.default.0x4310fc
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x2c], edi
mov edi, edx
cmp dword [ebp - 0x2c], 1
jb case.default.0x4310fc
lea edx, [ecx + ebx]
mov dword [ebp + 0xc], edi
mov dword [ebp - 0x10], edx
mov edx, 0x20
sub edx, ebx
mov dword [ebp - 0x40], edx
xor edx, edx
test ebx, ebx
jle 0x431381
cmp ebx, 8
jb 0x431349
lea eax, [edi - 1]
add eax, ebx
cmp ecx, eax
ja 0x43121c
lea eax, [ecx - 1]
add eax, ebx
cmp eax, edi
jae 0x431349
lea eax, [esi - 1]
add eax, ebx
cmp ecx, eax
ja 0x431232
lea eax, [ecx - 1]
add eax, ebx
cmp eax, esi
jae 0x431349
cmp ebx, 0x40
jb 0x4312eb
mov eax, ebx
and eax, 0x8000003f
jns 0x431249
dec eax
or eax, 0xffffffc0
inc eax
mov dword [ebp - 0x20], ebx
mov ebx, esi
sub dword [ebp - 0x20], eax
sub ebx, edi
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x40]
mov dword [ebp - 0x1c], ebx
mov ebx, ecx
sub ebx, edi
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x30], ebx
lea eax, [edi + 0x10]
mov edi, dword [ebp - 0x30]
mov ebx, esi
sub ebx, ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x48], ebx
mov ebx, dword [ebp - 0x44]
nop dword [eax]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edx + esi]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmmword [ebx - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [ecx + eax - 0x40]
paddb xmm1, xmm0
movups xmmword [edi + eax - 0x40], xmm1
mov edi, dword [ebp - 0x48]
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [edi + ebx - 0x40]
mov edi, dword [ebp - 0x30]
paddb xmm1, xmm0
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
add edx, 0x40
movups xmm0, xmmword [eax - 0x20]
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [ebp - 0x20]
jl 0x431280
mov ebx, dword [ebp - 4]
mov eax, ebx
mov ecx, dword [ebp - 0x14]
and al, 0x3f
mov edi, dword [ebp + 0xc]
cmp al, 8
jb 0x431345
jmp 0x4312f2
mov eax, esi
sub eax, edi
mov dword [ebp - 0x1c], eax
mov eax, ebx
and eax, 0x80000007
jns 0x431300
dec eax
or eax, 0xfffffff8
inc eax
mov dword [ebp - 0x20], ebx
mov ebx, ecx
sub dword [ebp - 0x20], eax
sub ebx, edi
mov dword [ebp - 0x48], ebx
lea eax, [edx + edi]
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x48]
nop word [eax + eax]
movq xmm1, qword [ebx + eax]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
paddb xmm1, xmm0
movq qword [esi + eax - 8], xmm1
cmp edx, dword [ebp - 0x20]
jl 0x431320
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
cmp edx, ebx
jge 0x43137e
mov eax, dword [ebp - 0xc]
lea esi, [edx + edi]
sub ecx, edi
mov dword [ebp - 0x48], ebx
sub eax, edi
mov dword [ebp - 0x30], ecx
sub ebx, edx
mov dword [ebp - 0x44], eax
mov edx, dword [ebp - 0x30]
mov ecx, eax
mov al, byte [ecx + esi]
lea esi, [esi + 1]
add al, byte [esi - 1]
mov byte [edx + esi - 1], al
sub ebx, 1
jne 0x431363
mov ecx, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x10]
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add esi, eax
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0xc], esi
mov byte [edx], 0xff
add edx, eax
sub dword [ebp - 0x2c], 1
mov dword [ebp - 0x10], edx
jne 0x4311f3
jmp case.default.0x4310fc
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x20], edi
mov edi, edx
cmp dword [ebp - 0x20], 1
jb case.default.0x4310fc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x2c], edx
nop word [eax + eax]
mov dword [ebp - 0x48], 0
test ebx, ebx
jle 0x431421
mov eax, dword [ebp - 0xc]
mov esi, edi
sub eax, edi
sub ecx, edi
mov dword [ebp - 0x40], ecx
mov edi, eax
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x44], eax
nop
mov eax, dword [ebp - 0x2c]
lea esi, [esi + 1]
movzx edx, byte [edi + esi - 1]
movzx eax, byte [eax + ecx]
inc ecx
add edx, eax
mov eax, dword [ebp - 0x40]
shr edx, 1
add dl, byte [esi - 1]
mov byte [eax + esi - 1], dl
cmp ecx, ebx
jl 0x4313f0
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x2c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x14], ecx
add esi, eax
mov dword [ebp - 0x2c], edx
sub dword [ebp - 0x20], 1
mov dword [ebp - 0xc], esi
jne 0x4313d0
jmp case.default.0x4310fc
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x2c], edi
mov edi, edx
cmp dword [ebp - 0x2c], 1
jb case.default.0x4310fc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x10], edx
test ebx, ebx
jle 0x431511
mov dword [ebp - 0x48], edx
mov eax, esi
sub eax, ecx
mov dword [ebp - 0x1c], ebx
mov ebx, dword [ebp - 0x48]
mov edx, esi
sub edx, edi
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x4c], eax
mov ecx, edi
mov dword [ebp - 0x50], edx
nop dword [eax + eax]
movzx eax, byte [ebx + eax]
movzx edi, byte [edx + ecx]
movzx edx, byte [ebx]
mov dword [ebp - 0x30], eax
mov esi, edx
sub esi, eax
mov dword [ebp - 0x40], edi
add edi, esi
mov dword [ebp - 0x20], edx
mov eax, edi
sub edi, dword [ebp - 0x30]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x48], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x44], eax
mov eax, edi
cdq
mov esi, eax
mov eax, dword [ebp - 0x48]
xor esi, edx
sub esi, edx
mov edx, dword [ebp - 0x44]
cmp eax, edx
jg 0x4314da
cmp eax, esi
jle 0x4314e6
mov eax, dword [ebp - 0x30]
cmp edx, esi
cmovle eax, dword [ebp - 0x40]
mov dword [ebp - 0x20], eax
mov al, byte [ecx]
inc ecx
mov edx, dword [ebp - 8]
add al, byte [ebp - 0x20]
mov byte [ebx + edx], al
inc ebx
sub dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x50]
jne 0x431490
mov ecx, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x10]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x14], ecx
add esi, eax
mov dword [ebp - 0x10], edx
sub dword [ebp - 0x2c], 1
mov dword [ebp - 0xc], esi
jne 0x431464
jmp case.default.0x4310fc
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x30], esi
cmp esi, 1
jb case.default.0x4310fc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x2c], edx
xor esi, esi
test ebx, ebx
jle 0x431580
sub edi, ecx
mov dword [ebp - 0x50], edi
mov eax, dword [ebp - 0x2c]
lea edx, [esi + ecx]
mov al, byte [eax + esi]
inc esi
shr al, 1
add al, byte [edx + edi]
mov byte [edx], al
cmp esi, ebx
jl 0x431562
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x2c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x2c], edx
sub dword [ebp - 0x30], 1
jne 0x431557
jmp case.default.0x4310fc
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x30], esi
cmp esi, 1
jb case.default.0x4310fc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x50], 0
test ebx, ebx
jle 0x4315ef
mov eax, edi
mov edi, dword [ebp - 0x50]
sub eax, ecx
mov dword [ebp - 0x4c], eax
nop dword [eax + eax]
lea esi, [edi + ecx]
mov al, byte [esi + eax]
add al, byte [edx + edi]
inc edi
mov edx, dword [ebp - 0x2c]
mov byte [esi], al
mov eax, dword [ebp - 0x4c]
cmp edi, ebx
jl 0x4315d0
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x30]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x2c], edx
sub esi, 1
mov dword [ebp - 0x30], esi
jne 0x4315b3
mov esi, dword [ebp + 0x20]
mov eax, dword [ebp - 8]
cmp esi, 0x10
jne 0x43197b
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x18]
mov ecx, dword [ecx + 0xc]
inc ecx
test edx, edx
je 0x43197b
add ecx, dword [ebp - 0x54]
add ecx, ebx
nop dword [eax]
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x431630
jmp 0x43197b
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x20]
dec eax
imul eax, ebx
mov dword [ebp - 0x10], eax
cmp edx, 6
ja case.default.0x431655
jmp dword [edx*4 + 0x431dd0]
push eax
push edi
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
jmp case.default.0x431655
xor esi, esi
test eax, eax
jle case.default.0x431655
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x54], eax
mov eax, edi
mov edi, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x50], eax
mov ebx, dword [ebp - 0x50]
lea edx, [ecx + esi]
mov al, byte [edi + esi]
inc esi
add al, byte [edx + ebx]
mov byte [edx], al
cmp esi, dword [ebp - 0x10]
jl 0x431687
jmp 0x43196f
xor edx, edx
test eax, eax
jle case.default.0x431655
cmp eax, 8
jb 0x4317ee
dec eax
mov dword [ebp - 0x54], eax
lea ebx, [eax + ecx]
add eax, edi
mov dword [ebp - 0x30], ebx
cmp ecx, eax
ja 0x4316cb
cmp ebx, edi
jae 0x4317ee
mov eax, dword [ebp - 0x54]
add eax, esi
cmp ecx, eax
ja 0x4316dd
cmp dword [ebp - 0x30], esi
jae 0x4317ee
mov eax, dword [ebp - 0x10]
cmp eax, 0x40
jb 0x431793
and eax, 0x8000003f
jns 0x4316f5
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, dword [ebp - 0x10]
sub ebx, eax
lea eax, [ecx + 0x20]
mov dword [ebp - 0x48], ebx
mov ebx, esi
sub ebx, edi
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x1c], ebx
lea eax, [edi + 0x10]
mov ebx, ecx
sub ebx, edi
mov edi, dword [ebp - 0x1c]
mov dword [ebp - 0x50], ebx
mov ebx, esi
sub ebx, ecx
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x4c], ebx
mov ebx, dword [ebp - 0x54]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + edx]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmmword [ebx - 0x60], xmm1
movups xmm1, xmmword [edi + eax - 0x40]
mov edi, dword [ebp - 0x4c]
movups xmm0, xmmword [eax - 0x40]
paddb xmm1, xmm0
movups xmmword [ecx + eax - 0x40], xmm1
movups xmm1, xmmword [edi + ebx - 0x40]
mov edi, dword [ebp - 0x1c]
movups xmm0, xmmword [eax - 0x30]
paddb xmm1, xmm0
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
add edx, 0x40
movups xmm0, xmmword [eax - 0x20]
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [ebp - 0x48]
jl 0x431724
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
and al, 0x3f
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
cmp al, 8
jb 0x4317e5
mov eax, dword [ebp - 0x10]
jmp 0x431796
sub dword [ebp - 0x1c], edi
and eax, 0x80000007
jns 0x4317a2
dec eax
or eax, 0xfffffff8
inc eax
mov ebx, dword [ebp - 0x10]
sub ebx, eax
lea eax, [edi + edx]
mov dword [ebp - 0x50], ebx
mov ebx, ecx
sub ebx, edi
mov dword [ebp - 0x54], ebx
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x54]
nop word [eax + eax]
movq xmm1, qword [ebx + eax]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
paddb xmm1, xmm0
movq qword [esi + eax - 8], xmm1
cmp edx, dword [ebp - 0x50]
jl 0x4317c0
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
cmp edx, dword [ebp - 0x10]
jge case.default.0x431655
mov ebx, dword [ebp - 0x10]
lea eax, [edi + edx]
sub esi, edi
mov dword [ebp - 0x54], eax
sub ecx, edi
sub ebx, edx
mov edx, eax
nop
mov al, byte [esi + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub ebx, 1
jne 0x431800
jmp 0x431972
xor edx, edx
mov dword [ebp - 0x30], edx
test eax, eax
jle case.default.0x431655
mov eax, ecx
mov dword [ebp - 0x54], edi
sub eax, ebx
sub esi, edi
mov ebx, dword [ebp - 0x10]
sub ecx, edi
mov dword [ebp - 0x50], eax
nop word [eax + eax]
movzx edx, byte [eax + edx]
lea edi, [edi + 1]
movzx eax, byte [esi + edi - 1]
add edx, eax
mov eax, dword [ebp - 0x50]
shr edx, 1
add dl, byte [edi - 1]
mov byte [ecx + edi - 1], dl
mov edx, dword [ebp - 0x30]
inc edx
mov dword [ebp - 0x30], edx
cmp edx, ebx
jl 0x431840
jmp 0x43196f
test eax, eax
jle case.default.0x431655
mov edx, ecx
mov dword [ebp - 0x2c], edi
sub edx, ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x54], edx
mov edx, esi
sub edx, ecx
mov ecx, dword [ebp - 0x2c]
sub esi, edi
mov dword [ebp - 0x48], edx
mov edi, dword [ebp - 0x54]
mov dword [ebp - 0xc], esi
movzx eax, byte [edx + edi]
movzx esi, byte [esi + ecx]
movzx edx, byte [edi]
mov dword [ebp - 0x30], eax
mov ecx, edx
sub ecx, eax
mov dword [ebp - 0x4c], esi
add esi, ecx
mov dword [ebp - 0x20], edx
mov eax, esi
sub esi, dword [ebp - 0x30]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x54], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x50], eax
mov eax, esi
cdq
mov ecx, eax
mov eax, dword [ebp - 0x54]
xor ecx, edx
sub ecx, edx
mov edx, dword [ebp - 0x50]
cmp eax, edx
jg 0x4318db
cmp eax, ecx
jle 0x4318e7
mov eax, dword [ebp - 0x30]
cmp edx, ecx
cmovle eax, dword [ebp - 0x4c]
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0xc]
mov edx, dword [ebp - 0x48]
mov al, byte [ecx]
inc ecx
add al, byte [ebp - 0x20]
mov byte [edi + ebx], al
inc edi
sub dword [ebp - 0x1c], 1
mov dword [ebp - 0x2c], ecx
jne 0x431891
mov edi, dword [ebp + 0xc]
jmp case.default.0x431655
xor esi, esi
test eax, eax
jle case.default.0x431655
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x54], eax
mov eax, edi
mov edi, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x50], eax
nop
mov al, byte [edi + esi]
lea edx, [ecx + esi]
mov ebx, dword [ebp - 0x50]
inc esi
shr al, 1
add al, byte [edx + ebx]
mov byte [edx], al
cmp esi, dword [ebp - 0x10]
jl 0x431920
jmp 0x43196f
mov dword [ebp - 0x54], 0
test eax, eax
jle case.default.0x431655
mov eax, ecx
mov edx, edi
mov edi, dword [ebp - 0x54]
sub eax, ebx
mov ebx, dword [ebp - 0x10]
sub edx, ecx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x50], edx
mov dl, byte [eax + edi]
lea esi, [ecx + edi]
mov eax, dword [ebp - 0x50]
inc edi
mov al, byte [esi + eax]
add al, dl
mov byte [esi], al
mov eax, dword [ebp - 0x4c]
cmp edi, ebx
jl 0x431957
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp - 4]
add edi, dword [ebp - 0x10]
mov esi, dword [ebp + 0x20]
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp + 0x1c]
inc edx
mov dword [ebp - 0x38], edx
cmp edx, eax
jb 0x430f05
mov edi, dword [ebp + 0x20]
mov esi, dword [ebp + 0x18]
cmp edi, 8
jge 0x431d28
test eax, eax
je 0x431d60
mov ebx, dword [ebp + 0x14]
imul ebx, esi
xor ecx, ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x4c], ebx
mov eax, dword [ebp + 8]
mov esi, ebx
sub esi, dword [ebp - 0x3c]
mov eax, dword [eax + 0xc]
add esi, eax
add esi, ecx
cmp dword [ebp + 0x24], 0
lea edx, [eax + ecx]
jne 0x4319d2
mov bl, byte [edi + 0x4976b0]
jmp 0x4319d4
mov bl, 1
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x18], ecx
cmp edi, 4
jne 0x431a41
mov eax, ecx
mov dword [ebp - 0x2c], eax
cmp eax, 2
jl 0x431a2f
mov edi, eax
shr edi, 1
mov eax, edi
neg eax
lea ecx, [ecx + eax*2]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x18], ecx
movzx ecx, byte [esi]
shr cl, 4
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
inc esi
and cl, 0xf
movzx ecx, cl
imul ecx, eax
mov byte [edx + 1], cl
add edx, 2
sub edi, 1
jne 0x431a00
mov eax, dword [ebp - 0x2c]
test eax, eax
jle 0x431c8a
mov cl, byte [esi]
shr cl, 4
jmp 0x431c7f
cmp edi, 2
jne 0x431b04
mov edi, ecx
mov dword [ebp - 0x2c], edi
cmp edi, 4
jl 0x431ac0
shr edi, 2
mov eax, edi
neg eax
lea ecx, [ecx + eax*4]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x18], ecx
movzx ecx, byte [esi]
shr cl, 6
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
shr cl, 4
and cl, 3
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 1], cl
movzx ecx, byte [esi]
shr cl, 2
and cl, 3
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 2], cl
movzx ecx, byte [esi]
inc esi
and cl, 3
movzx ecx, cl
imul ecx, eax
mov byte [edx + 3], cl
add edx, 4
sub edi, 1
jne 0x431a67
mov edi, dword [ebp - 0x2c]
test edi, edi
jle 0x431ad5
mov cl, byte [esi]
shr cl, 6
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 1
jle 0x431aee
mov cl, byte [esi]
shr cl, 4
and cl, 3
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 2
jle 0x431c8a
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x431c7f
cmp edi, 1
jne 0x431c8a
mov edi, ecx
mov dword [ebp - 0x18], ecx
cmp edi, 8
jl 0x431be1
mov eax, edi
mov dword [ebp - 0x18], ecx
shr eax, 3
mov dword [ebp - 0x54], eax
neg eax
lea edi, [edi + eax*8]
mov dword [ebp - 0x50], edi
mov edi, dword [ebp - 0x54]
movzx ecx, byte [esi]
shr cl, 7
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
shr cl, 6
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 1], cl
movzx ecx, byte [esi]
shr cl, 5
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 2], cl
movzx ecx, byte [esi]
shr cl, 4
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 3], cl
movzx ecx, byte [esi]
shr cl, 3
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 4], cl
movzx ecx, byte [esi]
shr cl, 2
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 5], cl
movzx ecx, byte [esi]
shr cl, 1
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 6], cl
movzx ecx, byte [esi]
inc esi
and cl, 1
movzx ecx, cl
imul ecx, eax
mov byte [edx + 7], cl
add edx, 8
sub edi, 1
jne 0x431b31
mov edi, dword [ebp - 0x50]
test edi, edi
jle 0x431bf6
mov cl, byte [esi]
shr cl, 7
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 1
jle 0x431c0f
mov cl, byte [esi]
shr cl, 6
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 2
jle 0x431c28
mov cl, byte [esi]
shr cl, 5
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 3
jle 0x431c41
mov cl, byte [esi]
shr cl, 4
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 4
jle 0x431c5a
mov cl, byte [esi]
shr cl, 3
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 5
jle 0x431c73
mov cl, byte [esi]
shr cl, 2
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 6
jle 0x431c8a
mov cl, byte [esi]
shr cl, 1
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
mov ebx, dword [ebp - 0x24]
cmp ebx, dword [ebp + 0x14]
je 0x431d03
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x18]
dec ecx
mov edx, dword [eax + 0xc]
add edx, dword [ebp - 0x20]
cmp ebx, 1
jne 0x431cc2
test ecx, ecx
js 0x431d03
nop dword [eax + eax]
mov byte [edx + ecx*2 + 1], 0xff
mov al, byte [ecx + edx]
mov byte [edx + ecx*2], al
sub ecx, 1
jns 0x431cb0
jmp 0x431d03
test ecx, ecx
js 0x431d03
lea esi, [ecx*2 + 1]
add esi, edx
lea edx, [edx + ecx*4]
add esi, ecx
add edx, 2
nop word [eax + eax]
sub ecx, 1
mov byte [edx + 1], 0xff
movzx eax, byte [esi + 1]
lea esi, [esi - 3]
mov byte [edx], al
lea edx, [edx - 4]
movzx eax, byte [esi + 3]
mov byte [edx + 3], al
movzx eax, byte [esi + 2]
mov byte [edx + 2], al
jns 0x431ce0
mov ecx, dword [ebp - 0x20]
add ecx, dword [ebp - 0x28]
sub dword [ebp + 0x1c], 1
mov ebx, dword [ebp - 0x4c]
mov edi, dword [ebp + 0x20]
mov dword [ebp - 0x20], ecx
jne 0x4319b2
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, 0x10
jne 0x431d60
mov ebx, dword [ebp + 0x14]
imul ebx, dword [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0xc]
mov edx, esi
imul ebx, eax
test ebx, ebx
je 0x431d60
movzx ecx, byte [esi]
lea edx, [edx + 2]
movzx eax, byte [edx - 1]
lea esi, [esi + 2]
shl cx, 8
or cx, ax
mov word [edx - 2], cx
sub ebx, 1
jne 0x431d43
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 0
mov ecx, dword [0x4ba108]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebx
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.Out_of_memory
xor eax, eax
mov esp, ebp
pop ebp
ret