Function at 0x414040
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x54
xor ecx, ecx
cmp dword [esp + 0x70], 0x10
push ebx
sete cl
push ebp
inc ecx
push esi
mov esi, dword [esp + 0x74]
mov ebp, ecx
push edi
mov edi, dword [esp + 0x74]
imul ebp, edi
mov dword [esp + 0x40], esi
mov eax, ebp
mov dword [esp + 0x10], ebp
imul eax, esi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x68]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov ebx, eax
imul ebx, ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], ebx
test esi, esi
js 0x4140d2
mov ecx, dword [esp + 0x7c]
test ecx, ecx
js 0x4140d2
je 0x4140a0
mov eax, 0x7fffffff
cdq
idiv ecx
cmp esi, eax
jg 0x4140d2
mov ecx, esi
imul ecx, dword [esp + 0x7c]
test ecx, ecx
js 0x4140d2
test ebp, ebp
js 0x4140d2
je 0x4140bd
mov eax, 0x7fffffff
cdq
idiv ebp
cmp ecx, eax
jg 0x4140d2
mov eax, dword [esp + 0x28]
imul eax, dword [esp + 0x7c]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
add esp, 4
jmp 0x4140d4
xor eax, eax
mov edx, dword [esp + 0x68]
mov dword [edx + 0xc], eax
test eax, eax
jne 0x4140f1
pop edi
pop esi
pop ebp
mov dword [0x49ddd0], 0x47ee7c
pop ebx
add esp, 0x54
ret
mov eax, dword [esp + 0x24]
mov ebp, dword [esp + 0x80]
mov ecx, dword [esp + 0x7c]
imul eax, esi
mov dword [esp + 0x2c], eax
imul eax, ebp
add eax, 7
shr eax, 3
mov dword [esp + 0x48], eax
inc eax
imul eax, ecx
cmp dword [esp + 0x70], eax
jb 0x414f2a
xor esi, esi
mov dword [esp + 0x44], esi
test ecx, ecx
je 0x414b62
mov ebp, dword [esp + 0x6c]
mov ecx, dword [edx + 0xc]
mov eax, esi
imul eax, dword [esp + 0x28]
movzx edx, byte [ebp]
inc ebp
mov dword [esp + 0x30], edx
add ecx, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x18], ecx
cmp edx, 4
ja 0x414f2a
cmp dword [esp + 0x80], 8
jge 0x414184
mov eax, edi
mov ebx, 1
imul eax, dword [esp + 0x78]
mov edi, dword [esp + 0x48]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x40], edi
sub eax, edi
add ecx, eax
mov dword [esp + 0x18], ecx
mov edi, ecx
sub edi, dword [esp + 0x28]
mov dword [esp + 0x1c], edi
test esi, esi
jne 0x41419d
movzx edx, byte [edx + 0x49d488]
mov dword [esp + 0x30], edx
test ebx, ebx
jle 0x414286
mov eax, edi
mov esi, ebp
sub eax, ebp
mov edi, ebx
sub ecx, ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x3c], ecx
cmp edx, 6
ja case.default.0x4141bc
jmp dword [edx*4 + 0x414f40]
inc esi
sub edi, 1
jne 0x4141b7
jmp 0x41427e
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [ecx + esi - 1], al
sub edi, 1
jne case.0x4141bc.0
jmp 0x41427e
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [ecx + esi - 1], al
sub edi, 1
jne case.0x4141bc.1
jmp 0x41427e
mov al, byte [eax + esi]
lea esi, [esi + 1]
add al, byte [esi - 1]
mov byte [ecx + esi - 1], al
sub edi, 1
je 0x41427e
mov eax, dword [esp + 0x20]
jmp case.0x4141bc.2
mov al, byte [eax + esi]
lea esi, [esi + 1]
shr al, 1
add al, byte [esi - 1]
mov byte [ecx + esi - 1], al
sub edi, 1
je 0x41427e
mov eax, dword [esp + 0x20]
jmp case.0x4141bc.3
movzx eax, byte [eax + esi]
push 0
push eax
push 0
call fcn.00419670
mov ecx, dword [esp + 0x48]
lea esi, [esi + 1]
add al, byte [esi - 1]
add esp, 0xc
mov byte [ecx + esi - 1], al
sub edi, 1
je 0x41427e
mov eax, dword [esp + 0x20]
jmp case.0x4141bc.4
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [ecx + esi - 1], al
sub edi, 1
jne case.0x4141bc.5
jmp 0x41427e
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [ecx + esi - 1], al
sub edi, 1
jne case.0x4141bc.6
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x80]
cmp eax, 8
jne 0x4142a8
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x24]
cmp edx, eax
je 0x4142a2
mov byte [ecx + edx], 0xff
mov ecx, eax
mov esi, edx
jmp 0x4142ce
cmp eax, 0x10
jne 0x4142c7
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x74]
je 0x4142bd
mov word [ecx + ebx], 0xffff
mov eax, dword [esp + 0x10]
mov esi, ebx
mov ecx, eax
jmp 0x4142d2
mov ecx, 1
mov esi, ecx
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
add ebp, esi
add edi, ecx
mov dword [esp + 0x6c], ebp
add ecx, dword [esp + 0x18]
mov esi, ebp
cmp dword [esp + 0x80], 8
mov dword [esp + 0x3c], esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x1c], ecx
jl 0x414854
mov ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x74]
mov ebx, dword [esp + 0x14]
je 0x414854
cmp edx, 6
ja case.default.0x414319
jmp dword [edx*4 + 0x414f5c]
mov edx, dword [esp + 0x78]
mov ebp, esi
dec edx
mov dword [esp + 0x30], edx
cmp edx, 1
jb case.default.0x414319
test ebx, ebx
jle 0x414356
mov edi, ebp
mov edx, ecx
sub edi, ecx
mov esi, ebx
mov al, byte [edi + edx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x414340
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, eax
sub edx, 1
mov dword [esp + 0x30], edx
jne 0x414334
jmp case.default.0x414319
mov edx, dword [esp + 0x78]
mov ebp, esi
lea edi, [edx - 1]
mov dword [esp + 0x30], edi
cmp edi, 1
jb 0x414821
mov edx, ecx
mov dword [esp + 0x6c], ebp
sub edx, eax
mov dword [esp + 0x20], edx
nop
xor esi, esi
test ebx, ebx
jle 0x4143c0
mov edi, ebp
mov ebp, dword [esp + 0x20]
sub edi, ecx
nop
lea edx, [esi + ecx]
mov al, byte [edi + edx]
add al, byte [esi + ebp]
inc esi
mov byte [edx], al
cmp esi, ebx
jl 0x4143a0
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x30]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x6c], ebp
add ecx, eax
mov dword [esp + 0x20], edx
sub edi, 1
mov dword [esp + 0x30], edi
jne 0x414390
jmp case.default.0x414319
mov edx, dword [esp + 0x78]
mov ebp, esi
dec edx
mov dword [esp + 0x30], edx
cmp edx, 1
jb case.default.0x414319
mov esi, 0x10
mov dword [esp + 0x6c], ebp
lea edx, [ecx + ebx]
sub esi, ebx
mov dword [esp + 0x18], edx
mov dword [esp + 0x3c], esi
nop word [eax + eax]
xor esi, esi
test ebx, ebx
jle 0x414536
cmp ebx, 0x40
jb 0x4144f7
lea eax, [ebp - 1]
lea edx, [ecx - 1]
add eax, ebx
add edx, ebx
cmp ecx, eax
ja 0x414439
cmp edx, ebp
jae 0x4144f3
lea eax, [edi - 1]
add eax, ebx
cmp ecx, eax
ja 0x41444a
cmp edx, edi
jae 0x4144f3
mov eax, ebx
and eax, 0x8000003f
jns 0x414458
dec eax
or eax, 0xffffffc0
inc eax
mov edx, ebx
mov ebx, ebp
sub ebx, ecx
sub edx, eax
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x3c]
mov dword [esp + 0x38], ebx
mov ebx, edi
sub ebx, ecx
mov dword [esp + 0x50], edx
mov ecx, edi
mov dword [esp + 0x34], ebx
sub ecx, ebp
lea edx, [ebp + 0x30]
mov dword [esp + 0x4c], ecx
mov ebp, ebx
mov ecx, dword [esp + 0x38]
nop dword [eax]
movups xmm0, xmmword [edx - 0x30]
mov ebx, dword [esp + 0x4c]
lea edx, [edx + 0x40]
movups xmm1, xmmword [esi + edi]
lea eax, [eax + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax + ecx - 0x40]
movups xmmword [eax - 0x50], xmm1
movups xmm1, xmmword [eax + ebp - 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [edx - 0x50]
movups xmmword [eax - 0x40], xmm1
movups xmm1, xmmword [edi + esi + 0x20]
add esi, 0x40
paddb xmm1, xmm0
movups xmm0, xmmword [edx - 0x40]
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [edx + ebx - 0x40]
mov ebx, dword [esp + 0x14]
paddb xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp esi, dword [esp + 0x50]
jl 0x414490
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x6c]
mov edx, dword [esp + 0x18]
cmp esi, ebx
jge 0x414532
mov dword [esp + 0x50], edi
lea edx, [esi + ebp]
mov eax, ecx
mov dword [esp + 0x50], ebx
sub eax, ebp
sub edi, ebp
sub ebx, esi
mov dword [esp + 0x4c], eax
mov esi, eax
mov al, byte [edx + edi]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [edx + esi - 1], al
sub ebx, 1
jne 0x414514
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov byte [edx], 0xff
add ebp, ebx
add ecx, eax
mov dword [esp + 0x6c], ebp
add edx, eax
mov dword [esp + 0x1c], ecx
add edi, eax
mov dword [esp + 0x18], edx
sub dword [esp + 0x30], 1
mov dword [esp + 0x20], edi
jne 0x414410
jmp case.default.0x414319
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x3c]
dec esi
mov dword [esp + 0x30], esi
mov ebp, edx
cmp esi, 1
jb case.default.0x414319
mov edx, ecx
mov dword [esp + 0x6c], ebp
sub edx, eax
mov dword [esp + 0x18], edx
nop word [eax + eax]
mov dword [esp + 0x50], 0
test ebx, ebx
jle 0x4145f4
sub edi, ebp
mov esi, ebp
sub ecx, ebp
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x3c]
nop word [eax + eax]
movzx edx, byte [edx + edi]
lea esi, [esi + 1]
movzx eax, byte [ecx + esi - 1]
inc edi
add edx, eax
shr edx, 1
add dl, byte [esi - 1]
mov byte [esi + ebp - 1], dl
mov edx, dword [esp + 0x18]
cmp edi, ebx
jl 0x4145c0
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, eax
mov dword [esp + 0x6c], ebp
add edx, eax
mov dword [esp + 0x1c], ecx
add edi, eax
mov dword [esp + 0x18], edx
sub esi, 1
mov dword [esp + 0x20], edi
mov dword [esp + 0x30], esi
jne 0x414590
jmp case.default.0x414319
mov edx, dword [esp + 0x78]
mov ebp, esi
dec edx
mov dword [esp + 0x18], edx
cmp edx, 1
jb case.default.0x414319
mov esi, dword [esp + 0x18]
mov edx, ecx
sub edx, eax
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x3c], edx
test ebx, ebx
jle 0x41470a
mov dword [esp + 0x50], edx
mov eax, edi
sub eax, ecx
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x10]
mov edx, edi
mov ecx, dword [esp + 0x50]
sub edx, ebp
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edx
movzx eax, byte [eax + ecx]
movzx edi, byte [edx + ebp]
movzx edx, byte [ecx]
mov dword [esp + 0x30], eax
mov esi, edx
sub esi, eax
mov dword [esp + 0x54], edi
add edi, esi
mov dword [esp + 0x34], edx
mov eax, edi
sub edi, dword [esp + 0x30]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x50], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x4c], eax
mov eax, edi
cdq
mov esi, eax
mov eax, dword [esp + 0x50]
xor esi, edx
sub esi, edx
mov edx, dword [esp + 0x4c]
cmp eax, edx
jg 0x4146c4
cmp eax, esi
jle 0x4146d3
mov eax, dword [esp + 0x30]
cmp edx, esi
cmovle eax, dword [esp + 0x54]
mov dword [esp + 0x34], eax
mov al, byte [ebp]
inc ebp
add al, byte [esp + 0x34]
mov edx, dword [esp + 0x5c]
mov byte [ecx + ebx], al
inc ecx
sub dword [esp + 0x38], 1
mov eax, dword [esp + 0x58]
jne 0x414672
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x18]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, eax
mov dword [esp + 0x6c], ebp
add edx, eax
mov dword [esp + 0x1c], ecx
add edi, eax
mov dword [esp + 0x3c], edx
sub esi, 1
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], esi
jne 0x414646
jmp case.default.0x414319
mov edx, dword [esp + 0x78]
mov ebp, esi
lea edi, [edx - 1]
mov dword [esp + 0x3c], edi
cmp edi, 1
jb 0x414821
mov edx, ecx
mov dword [esp + 0x6c], ebp
sub edx, eax
mov dword [esp + 0x20], edx
nop word [eax + eax]
xor esi, esi
test ebx, ebx
jle 0x414792
mov edi, ebp
mov ebp, dword [esp + 0x20]
sub edi, ecx
nop
mov al, byte [esi + ebp]
lea edx, [esi + ecx]
shr al, 1
inc esi
add al, byte [edi + edx]
mov byte [edx], al
cmp esi, ebx
jl 0x414770
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x3c]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x6c], ebp
add ecx, eax
mov dword [esp + 0x20], edx
sub edi, 1
mov dword [esp + 0x3c], edi
jne 0x414760
jmp case.default.0x414319
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x3c]
dec esi
mov dword [esp + 0x38], esi
mov ebp, edx
cmp esi, 1
jb case.default.0x414319
mov edx, ecx
mov dword [esp + 0x6c], ebp
sub edx, eax
mov dword [esp + 0x20], edx
nop
xor edi, edi
test ebx, ebx
jle 0x414802
mov dword [esp + 0x5c], ebp
sub ebp, ecx
nop dword [eax]
mov dl, byte [edx + edi]
lea esi, [edi + ecx]
mov al, byte [esi + ebp]
inc edi
add al, dl
mov edx, dword [esp + 0x20]
mov byte [esi], al
cmp edi, ebx
jl 0x4147e0
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x38]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x6c], ebp
add ecx, eax
mov dword [esp + 0x20], edx
sub esi, 1
mov dword [esp + 0x38], esi
jne 0x4147d0
mov edx, dword [esp + 0x78]
cmp dword [esp + 0x80], 0x10
jne 0x414b3e
mov ecx, dword [esp + 0x68]
mov ecx, dword [ecx + 0xc]
inc ecx
test edx, edx
je 0x414b3e
add ecx, dword [esp + 0x60]
add ecx, ebx
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x414845
jmp 0x414b3e
mov esi, dword [esp + 0x40]
dec esi
imul esi, ebx
mov dword [esp + 0x18], esi
cmp edx, 6
ja case.default.0x414869
jmp dword [edx*4 + 0x414f78]
push esi
push ebp
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
jmp case.default.0x414869
xor edi, edi
test esi, esi
jle case.default.0x414869
mov eax, ecx
mov dword [esp + 0x60], ebp
sub eax, ebx
sub ebp, ecx
mov dword [esp + 0x5c], eax
mov ebx, eax
nop word [eax + eax]
lea edx, [ecx + edi]
mov al, byte [edx + ebp]
add al, byte [ebx + edi]
inc edi
mov byte [edx], al
cmp edi, esi
jl 0x4148a0
jmp 0x414b34
xor eax, eax
test esi, esi
jle case.default.0x414869
cmp esi, 0x40
jb 0x4149ab
mov dword [esp + 0x20], eax
lea edx, [ecx - 1]
lea eax, [ebp - 1]
add edx, esi
add eax, esi
cmp ecx, eax
ja 0x4148e2
cmp edx, ebp
jae 0x4149a7
lea eax, [edi - 1]
add eax, esi
cmp ecx, eax
ja 0x4148f3
cmp edx, edi
jae 0x4149a7
mov eax, esi
and eax, 0x8000003f
jns 0x414901
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, edi
mov edx, esi
sub ebx, ebp
sub edx, eax
mov dword [esp + 0x60], ebx
mov eax, ebp
mov esi, dword [esp + 0x60]
mov ebx, ecx
sub ebx, ebp
mov dword [esp + 0x54], edx
mov dword [esp + 0x5c], ebx
lea edx, [ecx + 0x10]
mov ebp, dword [esp + 0x5c]
mov ebx, edi
sub ebx, ecx
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x58]
nop word [eax + eax]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + eax - 0x40]
lea edx, [edx + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [eax + ebp - 0x40], xmm1
movups xmm1, xmmword [ecx + edx - 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [edi + ebx + 0x20]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x10]
movups xmmword [edx - 0x30], xmm1
movups xmm1, xmmword [edi + ebx + 0x30]
add ebx, 0x40
paddb xmm1, xmm0
movups xmmword [edx - 0x20], xmm1
cmp ebx, dword [esp + 0x54]
jl 0x414940
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x6c]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
cmp eax, esi
jge case.default.0x414869
mov ebx, esi
lea edx, [eax + ebp]
sub edi, ebp
sub ecx, ebp
sub ebx, eax
nop
mov al, byte [edx + edi]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [edx + ecx - 1], al
sub ebx, 1
jne 0x4149c0
jmp 0x414b38
mov dword [esp + 0x5c], 0
test esi, esi
jle case.default.0x414869
mov eax, ecx
mov dword [esp + 0x60], ebp
sub eax, ebx
sub edi, ebp
sub ecx, ebp
mov dword [esp + 0x58], eax
mov ebx, ebp
mov ebp, dword [esp + 0x5c]
nop dword [eax]
movzx eax, byte [eax + ebp]
lea ebx, [ebx + 1]
movzx edx, byte [ebx + edi - 1]
inc ebp
add edx, eax
mov eax, dword [esp + 0x58]
shr edx, 1
add dl, byte [ebx - 1]
mov byte [ebx + ecx - 1], dl
cmp ebp, esi
jl 0x414a00
jmp 0x414b34
test esi, esi
jle case.default.0x414869
mov eax, ecx
mov dword [esp + 0x30], esi
sub eax, ebx
mov edx, ebp
mov dword [esp + 0x60], eax
mov eax, edi
sub eax, ecx
mov dword [esp + 0x34], edx
sub edi, ebp
mov dword [esp + 0x54], eax
mov ebp, dword [esp + 0x60]
nop dword [eax]
movzx eax, byte [eax + ebp]
movzx esi, byte [edx + edi]
movzx edx, byte [ebp]
mov dword [esp + 0x3c], eax
mov ecx, edx
sub ecx, eax
mov dword [esp + 0x58], esi
add esi, ecx
mov dword [esp + 0x38], edx
mov eax, esi
sub esi, dword [esp + 0x3c]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x60], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x5c], eax
mov eax, esi
cdq
mov ecx, eax
mov eax, dword [esp + 0x60]
xor ecx, edx
sub ecx, edx
mov edx, dword [esp + 0x5c]
cmp eax, edx
jg 0x414aa3
cmp eax, ecx
jle 0x414ab2
mov eax, dword [esp + 0x3c]
cmp edx, ecx
cmovle eax, dword [esp + 0x58]
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x34]
mov al, byte [edx]
inc edx
add al, byte [esp + 0x38]
mov byte [ebx + ebp], al
inc ebp
sub dword [esp + 0x30], 1
mov eax, dword [esp + 0x54]
mov dword [esp + 0x34], edx
jne 0x414a50
mov ebp, dword [esp + 0x6c]
mov esi, dword [esp + 0x18]
jmp case.default.0x414869
xor edi, edi
test esi, esi
jle case.default.0x414869
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x60], eax
mov eax, ebp
mov ebx, dword [esp + 0x60]
sub eax, ecx
mov dword [esp + 0x5c], eax
mov ebp, eax
mov al, byte [ebx + edi]
lea edx, [ecx + edi]
shr al, 1
inc edi
add al, byte [edx + ebp]
mov byte [edx], al
cmp edi, esi
jl 0x414af6
jmp 0x414b34
xor edi, edi
test esi, esi
jle case.default.0x414869
mov eax, ecx
mov dword [esp + 0x60], ebp
sub eax, ebx
sub ebp, ecx
mov dword [esp + 0x5c], eax
mov ebx, eax
lea esi, [ecx + edi]
mov al, byte [esi + ebp]
add al, byte [ebx + edi]
inc edi
mov byte [esi], al
mov esi, dword [esp + 0x18]
cmp edi, esi
jl 0x414b20
mov ebp, dword [esp + 0x6c]
mov ebx, dword [esp + 0x14]
add ebp, esi
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x7c]
inc esi
mov edi, dword [esp + 0x74]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x44], esi
cmp esi, ecx
jb 0x414134
mov ebp, dword [esp + 0x80]
cmp ebp, 8
jge 0x414ee6
test ecx, ecx
je 0x414f1d
mov ebx, edi
imul ebx, dword [esp + 0x78]
xor ecx, ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x60], ebx
mov eax, dword [edx + 0xc]
mov esi, ecx
sub esi, dword [esp + 0x48]
add esi, ebx
add esi, eax
cmp dword [esp + 0x84], 0
lea edx, [ecx + eax]
jne 0x414ba6
mov bl, byte [ebp + 0x49d22c]
jmp 0x414ba8
mov bl, 1
cmp ebp, 4
jne 0x414c04
mov ebp, dword [esp + 0x2c]
cmp ebp, 2
jl 0x414bf2
mov edi, ebp
shr edi, 1
mov eax, edi
neg eax
lea ebp, [ebp + eax*2]
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 0x414bc2
mov edi, dword [esp + 0x74]
test ebp, ebp
jle 0x414e3d
mov cl, byte [esi]
shr cl, 4
jmp 0x414e32
cmp ebp, 2
jne 0x414cc1
mov ebp, dword [esp + 0x2c]
cmp ebp, 4
jl 0x414c7d
mov edi, ebp
shr edi, 2
mov eax, edi
neg eax
lea ebp, [ebp + eax*4]
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 0x414c23
mov edi, dword [esp + 0x74]
test ebp, ebp
jle 0x414c92
mov cl, byte [esi]
shr cl, 6
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp ebp, 1
jle 0x414cab
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 ebp, 2
jle 0x414e3d
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x414e32
cmp ebp, 1
jne 0x414e3d
mov edi, dword [esp + 0x2c]
cmp edi, 8
jl 0x414d90
mov ebp, edi
shr ebp, 3
mov eax, ebp
neg eax
lea edi, [edi + eax*8]
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 ebp, 1
jne 0x414ce3
test edi, edi
jle 0x414da5
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 0x414dbe
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 0x414dd7
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 0x414df0
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 0x414e09
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 0x414e22
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
mov edi, dword [esp + 0x74]
jle 0x414e3d
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 [esp + 0x24]
cmp ebx, edi
je 0x414eb3
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x78]
dec ecx
mov edx, dword [eax + 0xc]
add edx, dword [esp + 0x20]
cmp ebx, 1
jne 0x414e72
test ecx, ecx
js 0x414eb3
nop
mov byte [edx + ecx*2 + 1], 0xff
mov al, byte [ecx + edx]
mov byte [edx + ecx*2], al
sub ecx, 1
jns 0x414e60
jmp 0x414eb3
test ecx, ecx
js 0x414eb3
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 0x414e90
mov ecx, dword [esp + 0x20]
add ecx, dword [esp + 0x28]
sub dword [esp + 0x7c], 1
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x80]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x20], ecx
jne 0x414b84
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x54
ret
cmp ebp, 0x10
jne 0x414f1d
imul edi, dword [esp + 0x78]
mov esi, dword [edx + 0xc]
mov edx, esi
imul edi, ecx
test edi, edi
je 0x414f1d
nop dword [eax]
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 edi, 1
jne 0x414f00
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x54
ret
pop edi
pop esi
pop ebp
mov dword [0x49ddd0], 0x47ef44
xor eax, eax
pop ebx
add esp, 0x54
ret