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

Disassembly:
sub esp, 0x58
push ebx
push ebp
mov eax, ecx
mov ebp, edx
push esi
xor ecx, ecx
mov dword [esp + 0x20], eax
push edi
mov edi, dword [esp + 0x7c]
cmp edi, 0x10
mov eax, dword [eax]
sete cl
inc ecx
mov esi, ecx
imul esi, dword [esp + 0x70]
mov eax, dword [eax + 8]
mov dword [esp + 0x28], eax
mov ebx, esi
mov dword [esp + 0x10], esi
imul ebx, dword [esp + 0x74]
mov dword [esp + 0x30], ebx
mov ebx, eax
imul ebx, ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x14], ebx
test ecx, ecx
js 0x100d329c
mov eax, dword [esp + 0x78]
test eax, eax
js 0x100d329c
je 0x100d2379
xor edx, edx
mov eax, 0x7fffffff
div dword [esp + 0x78]
cmp ecx, eax
jg 0x100d329c
mov eax, dword [esp + 0x78]
imul ecx, eax
test ecx, ecx
js 0x100d329c
test esi, esi
js 0x100d329c
je 0x100d239e
mov eax, 0x7fffffff
cdq
idiv esi
cmp ecx, eax
jg 0x100d329c
mov eax, dword [esp + 0x30]
imul eax, dword [esp + 0x78]
push eax
call fcn.10105fb5
mov ecx, dword [esp + 0x28]
add esp, 4
mov dword [ecx + 0xc], eax
test eax, eax
je 0x100d32a7
mov ecx, dword [esp + 0x28]
test ecx, ecx
js 0x100d32a7
mov esi, dword [esp + 0x74]
test esi, esi
je 0x100d23e4
xor edx, edx
mov eax, 0x7fffffff
div esi
cmp ecx, eax
jg 0x100d32a7
imul ecx, esi
mov dword [esp + 0x20], ecx
test ecx, ecx
js 0x100d32a7
test edi, edi
js 0x100d32a7
je 0x100d240e
xor edx, edx
mov eax, 0x7fffffff
div edi
cmp ecx, eax
jg 0x100d32a7
mov eax, ecx
imul eax, edi
cmp eax, 0x7ffffff8
jg 0x100d32a7
mov eax, ecx
imul eax, edi
add eax, 7
shr eax, 3
mov dword [esp + 0x4c], eax
inc eax
imul eax, dword [esp + 0x78]
cmp dword [esp + 0x6c], eax
jb 0x100d32a7
mov eax, dword [esp + 0x78]
xor esi, esi
mov dword [esp + 0x48], esi
test eax, eax
je 0x100d2bfe
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x24]
mov eax, esi
imul eax, dword [esp + 0x30]
mov edx, dword [ecx + 0xc]
movzx ecx, byte [ebp]
inc ebp
add edx, eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x6c], edx
mov dword [esp + 0x34], ecx
cmp ecx, 4
ja 0x100d32a7
cmp edi, 8
jge 0x100d24ae
mov ebx, dword [esp + 0x74]
mov edi, dword [esp + 0x4c]
cmp edi, ebx
ja 0x100d32a7
mov eax, dword [esp + 0x70]
imul eax, ebx
mov ebx, 1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x44], edi
sub eax, edi
add edx, eax
mov dword [esp + 0x6c], edx
mov edi, edx
sub edi, dword [esp + 0x30]
mov dword [esp + 0x1c], edi
test esi, esi
jne 0x100d24c7
movzx ecx, byte [ecx + 0x101482f4]
mov dword [esp + 0x34], ecx
test ebx, ebx
jle 0x100d25a6
mov eax, edi
mov edx, ebp
mov edi, dword [esp + 0x6c]
sub eax, ebp
mov dword [esp + 0x2c], eax
sub edi, ebp
mov esi, ebx
cmp ecx, 6
ja case.default.0x100d24e6
jmp dword [ecx*4 + 0x100d32b4]
inc edx
sub esi, 1
jne 0x100d24e1
jmp 0x100d259e
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [edi + edx - 1], al
sub esi, 1
jne case.0x100d24e6.0
jmp 0x100d259e
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [edi + edx - 1], al
sub esi, 1
jne case.0x100d24e6.1
jmp 0x100d259e
mov al, byte [eax + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [edi + edx - 1], al
sub esi, 1
je 0x100d259e
mov eax, dword [esp + 0x2c]
jmp case.0x100d24e6.2
mov al, byte [eax + edx]
lea edx, [edx + 1]
shr al, 1
add al, byte [edx - 1]
mov byte [edi + edx - 1], al
sub esi, 1
je 0x100d259e
mov eax, dword [esp + 0x2c]
jmp case.0x100d24e6.3
mov cl, byte [eax + edx]
lea edx, [edx + 1]
xor al, al
cmp al, cl
sbb al, al
and al, cl
add al, byte [edx - 1]
mov byte [edi + edx - 1], al
sub esi, 1
je 0x100d259e
mov eax, dword [esp + 0x2c]
jmp case.0x100d24e6.4
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [edi + edx - 1], al
sub esi, 1
jne case.0x100d24e6.5
jmp 0x100d259e
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [edi + edx - 1], al
sub esi, 1
jne case.0x100d24e6.6
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x7c]
cmp eax, 8
jne 0x100d25d6
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x28]
cmp ecx, eax
je 0x100d25bf
mov byte [edx + ecx], 0xff
add ebp, ecx
add edi, eax
lea ecx, [eax + edx]
mov dword [esp + 0x6c], ebp
mov esi, ebp
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ecx
jmp 0x100d2622
cmp eax, 0x10
jne 0x100d2606
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x70]
je 0x100d25eb
mov word [edx + ebx], 0xffff
mov eax, dword [esp + 0x10]
add ebp, ebx
add edi, eax
mov dword [esp + 0x6c], ebp
mov esi, ebp
mov dword [esp + 0x1c], edi
lea ecx, [edx + eax]
mov dword [esp + 0x18], ecx
jmp 0x100d2626
inc ebp
lea ecx, [edx + 1]
inc edi
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x1c], edi
mov esi, ebp
mov dword [esp + 0x18], ecx
cmp eax, 8
jl 0x100d2b7e
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
cmp edx, dword [esp + 0x70]
je 0x100d2b7e
mov edx, dword [esp + 0x34]
cmp edx, 6
ja case.default.0x100d2643
mov ebp, esi
jmp dword [edx*4 + 0x100d32d0]
mov edx, dword [esp + 0x74]
mov ebp, esi
dec edx
mov dword [esp + 0x6c], edx
cmp edx, 1
jb case.default.0x100d2643
nop
test ebx, ebx
jle 0x100d2686
mov edi, ebp
mov edx, ecx
sub edi, ecx
mov esi, ebx
nop dword [eax]
mov al, byte [edi + edx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x100d2670
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x6c]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, eax
sub edx, 1
mov dword [esp + 0x6c], edx
jne 0x100d2660
jmp case.default.0x100d2643
mov edx, dword [esp + 0x74]
mov ebp, esi
lea edi, [edx - 1]
mov dword [esp + 0x34], edi
cmp edi, 1
jb 0x100d2b4f
mov edx, ecx
mov dword [esp + 0x6c], ebp
sub edx, eax
mov dword [esp + 0x2c], edx
nop
xor esi, esi
test ebx, ebx
jle 0x100d26f0
mov edi, ebp
mov ebp, dword [esp + 0x2c]
sub edi, ecx
nop
mov al, byte [esi + ebp]
lea edx, [esi + ecx]
add al, byte [edi + edx]
inc esi
mov byte [edx], al
cmp esi, ebx
jl 0x100d26d0
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x34]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x6c], ebp
add ecx, eax
mov dword [esp + 0x2c], edx
sub edi, 1
mov dword [esp + 0x34], edi
jne 0x100d26c0
jmp case.default.0x100d2643
mov edx, dword [esp + 0x74]
mov ebp, esi
dec edx
mov dword [esp + 0x2c], edx
cmp edx, 1
jb case.default.0x100d2643
lea edx, [ecx + ebx]
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x34], edx
mov edx, 0x20
sub edx, ebx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x2c]
nop
xor esi, esi
test ebx, ebx
jle 0x100d2866
cmp ebx, 0x40
jb 0x100d282b
lea eax, [ebp - 1]
lea edx, [ecx - 1]
add eax, ebx
add edx, ebx
cmp ecx, eax
ja 0x100d2769
cmp edx, ebp
jae 0x100d282b
lea eax, [edi - 1]
add eax, ebx
cmp ecx, eax
ja 0x100d277a
cmp edx, edi
jae 0x100d282b
mov eax, ebx
and eax, 0x8000003f
jns 0x100d2788
dec eax
or eax, 0xffffffc0
inc eax
mov edx, ebx
mov ebx, edi
sub ebx, ebp
sub edx, eax
mov dword [esp + 0x3c], ebx
lea eax, [ebp + 0x10]
mov ebx, ecx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x40]
sub ebx, ebp
add edx, dword [esp + 0x34]
mov dword [esp + 0x38], ebx
mov ebx, edi
mov ebp, dword [esp + 0x38]
sub ebx, ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x50], ebx
nop dword [eax + eax]
movups xmm0, xmmword [eax - 0x10]
mov ebx, dword [esp + 0x50]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + edi]
lea edx, [edx + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [edx - 0x60], xmm1
movups xmm1, xmmword [ecx + eax - 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [eax + ebp - 0x40], xmm1
movups xmm1, xmmword [ebx + edx - 0x40]
mov ebx, dword [esp + 0x14]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [edi + esi + 0x30]
add esi, 0x40
paddb xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp esi, dword [esp + 0x54]
jl 0x100d27c0
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x6c]
mov dword [esp + 0x54], esi
cmp esi, ebx
jge 0x100d285e
mov dword [esp + 0x6c], edi
lea edx, [esi + ebp]
mov eax, ecx
mov dword [esp + 0x6c], ebx
sub eax, ebp
sub edi, ebp
sub ebx, esi
mov dword [esp + 0x54], eax
mov esi, eax
mov al, byte [edi + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [esi + edx - 1], al
sub ebx, 1
jne 0x100d2844
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x34]
add ebp, ebx
add ecx, eax
mov dword [esp + 0x6c], ebp
add edi, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], edi
mov byte [esi], 0xff
add esi, eax
sub edx, 1
mov dword [esp + 0x34], esi
mov dword [esp + 0x2c], edx
jne 0x100d2740
jmp case.default.0x100d2643
mov edx, dword [esp + 0x74]
mov ebp, esi
dec edx
mov dword [esp + 0x2c], edx
cmp edx, 1
jb case.default.0x100d2643
mov esi, dword [esp + 0x2c]
mov edx, ecx
sub edx, eax
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x34], edx
nop dword [eax + eax]
mov dword [esp + 0x54], 0
test ebx, ebx
jle 0x100d2924
sub edi, ebp
mov esi, ebp
sub ecx, ebp
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x50]
mov ebp, dword [esp + 0x40]
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 + 0x34]
cmp edi, ebx
jl 0x100d28f0
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x2c]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, eax
mov dword [esp + 0x6c], ebp
add edx, eax
mov dword [esp + 0x18], ecx
add edi, eax
mov dword [esp + 0x34], edx
sub esi, 1
mov dword [esp + 0x1c], edi
mov dword [esp + 0x2c], esi
jne 0x100d28c0
jmp case.default.0x100d2643
mov edx, dword [esp + 0x74]
mov ebp, esi
dec edx
mov dword [esp + 0x34], edx
cmp edx, 1
jb case.default.0x100d2643
mov esi, dword [esp + 0x34]
mov edx, ecx
sub edx, eax
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x40], edx
test ebx, ebx
jle 0x100d2a3a
mov dword [esp + 0x54], edx
mov eax, edi
sub eax, ecx
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x54]
mov edx, edi
mov ecx, dword [esp + 0x10]
sub edx, ebp
mov dword [esp + 0x50], ebp
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edx
movzx eax, byte [ebx + eax]
movzx edi, byte [edx + ebp]
movzx edx, byte [ebx]
mov dword [esp + 0x2c], eax
mov esi, edx
sub esi, eax
mov dword [esp + 0x58], edi
add edi, esi
mov dword [esp + 0x38], edx
mov eax, edi
sub edi, dword [esp + 0x2c]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x54], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x50], eax
mov eax, edi
cdq
mov esi, eax
mov eax, dword [esp + 0x54]
xor esi, edx
sub esi, edx
mov edx, dword [esp + 0x50]
cmp eax, edx
jg 0x100d29f4
cmp eax, esi
jle 0x100d2a03
mov eax, dword [esp + 0x2c]
cmp edx, esi
cmovle eax, dword [esp + 0x58]
mov dword [esp + 0x38], eax
mov al, byte [ebp]
inc ebp
add al, byte [esp + 0x38]
mov edx, dword [esp + 0x60]
mov byte [ebx + ecx], al
inc ebx
sub dword [esp + 0x3c], 1
mov eax, dword [esp + 0x5c]
jne 0x100d29a2
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, eax
mov dword [esp + 0x6c], ebp
add edx, eax
mov dword [esp + 0x18], ecx
add edi, eax
mov dword [esp + 0x40], edx
sub esi, 1
mov dword [esp + 0x1c], edi
mov dword [esp + 0x34], esi
jne 0x100d2976
jmp case.default.0x100d2643
mov edx, dword [esp + 0x74]
mov ebp, esi
lea edi, [edx - 1]
mov dword [esp + 0x40], edi
cmp edi, 1
jb 0x100d2b4f
mov edx, ecx
mov dword [esp + 0x6c], ebp
sub edx, eax
mov dword [esp + 0x34], edx
nop word [eax + eax]
xor esi, esi
test ebx, ebx
jle 0x100d2ac2
mov edi, ebp
mov ebp, dword [esp + 0x34]
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 0x100d2aa0
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x40]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x6c], ebp
add ecx, eax
mov dword [esp + 0x34], edx
sub edi, 1
mov dword [esp + 0x40], edi
jne 0x100d2a90
jmp case.default.0x100d2643
mov edx, dword [esp + 0x74]
mov ebp, esi
dec edx
mov dword [esp + 0x2c], edx
cmp edx, 1
jb case.default.0x100d2643
mov esi, dword [esp + 0x2c]
mov edx, ecx
sub edx, eax
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x34], edx
nop
xor edi, edi
test ebx, ebx
jle 0x100d2b30
mov dword [esp + 0x60], ebp
sub ebp, ecx
nop dword [eax]
lea esi, [edi + ecx]
mov al, byte [esi + ebp]
add al, byte [edx + edi]
inc edi
mov edx, dword [esp + 0x34]
mov byte [esi], al
cmp edi, ebx
jl 0x100d2b10
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x2c]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x6c], ebp
add ecx, eax
mov dword [esp + 0x34], edx
sub esi, 1
mov dword [esp + 0x2c], esi
jne 0x100d2b00
mov edx, dword [esp + 0x74]
mov edi, dword [esp + 0x7c]
cmp edi, 0x10
jne 0x100d2be9
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + 0xc]
inc ecx
test edx, edx
je 0x100d2be9
add ecx, dword [esp + 0x64]
add ecx, ebx
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x100d2b72
jmp 0x100d2be9
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
dec esi
imul esi, ebx
mov dword [esp + 0x1c], esi
cmp edx, 6
ja case.default.0x100d2b93
jmp dword [edx*4 + 0x100d32ec]
push esi
push ebp
push ecx
call fcn.10101750
add esp, 0xc
jmp case.default.0x100d2b93
mov edi, dword [esp + 0x1c]
xor esi, esi
test edi, edi
jle 0x100d2bdf
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x64], eax
mov eax, ebp
mov ebx, dword [esp + 0x64]
sub eax, ecx
mov dword [esp + 0x60], eax
mov ebp, eax
mov al, byte [ebx + esi]
lea edx, [ecx + esi]
add al, byte [edx + ebp]
inc esi
mov byte [edx], al
cmp esi, edi
jl 0x100d2bc7
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x6c]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x7c]
add ebp, esi
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x78]
inc esi
mov dword [esp + 0x48], esi
cmp esi, eax
jb 0x100d2453
cmp edi, 8
jge 0x100d3251
test eax, eax
je 0x100d328d
mov ebx, dword [esp + 0x70]
imul ebx, dword [esp + 0x74]
xor ecx, ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x64], ebx
mov eax, dword [esp + 0x24]
mov esi, ecx
sub esi, dword [esp + 0x4c]
add esi, ebx
mov eax, dword [eax + 0xc]
add esi, eax
cmp dword [esp + 0x80], 0
lea edx, [ecx + eax]
jne 0x100d2f02
mov bl, byte [edi + 0x101482e8]
jmp 0x100d2f04
xor edx, edx
mov dword [esp + 0x34], edx
test esi, esi
jle case.default.0x100d2b93
cmp esi, 0x40
jb 0x100d2d53
lea eax, [ebp - 1]
mov dword [esp + 0x34], edx
add eax, esi
cmp ecx, eax
ja 0x100d2c7c
lea eax, [ecx - 1]
add eax, esi
cmp eax, ebp
jae 0x100d2d53
lea eax, [edi - 1]
add eax, esi
cmp ecx, eax
ja 0x100d2c92
lea eax, [ecx - 1]
add eax, esi
cmp eax, edi
jae 0x100d2d53
mov eax, esi
and eax, 0x8000003f
jns 0x100d2ca0
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, esi
sub ebx, eax
lea eax, [ecx + 0x20]
mov dword [esp + 0x54], ebx
mov ebx, edi
sub ebx, ebp
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], ebx
lea eax, [ebp + 0x10]
mov esi, dword [esp + 0x60]
mov ebx, ecx
sub ebx, ebp
mov dword [esp + 0x5c], ebx
mov ebx, edi
sub ebx, ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x64]
mov ebp, dword [esp + 0x58]
nop word [eax + eax]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edi + edx]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [ebx - 0x60], xmm1
movups xmm1, xmmword [esi + eax - 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [ecx + eax - 0x40], xmm1
movups xmm1, xmmword [ebx + ebp - 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [edi + edx + 0x30]
add edx, 0x40
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [esp + 0x54]
jl 0x100d2ce0
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x6c]
mov dword [esp + 0x64], edx
mov dword [esp + 0x34], edx
cmp edx, esi
jge case.default.0x100d2b93
mov ebx, esi
add edx, ebp
sub edi, ebp
sub ecx, ebp
sub ebx, dword [esp + 0x34]
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 0x100d2d60
mov ebx, dword [esp + 0x14]
jmp case.default.0x100d2b93
mov dword [esp + 0x60], 0
test esi, esi
jle case.default.0x100d2b93
mov eax, ecx
mov dword [esp + 0x64], ebp
sub eax, ebx
sub edi, ebp
sub ecx, ebp
mov dword [esp + 0x5c], eax
mov ebx, ebp
mov ebp, dword [esp + 0x60]
movzx edx, byte [eax + ebp]
lea ebx, [ebx + 1]
movzx eax, byte [edi + ebx - 1]
inc ebp
add edx, eax
mov eax, dword [esp + 0x5c]
shr edx, 1
add dl, byte [ebx - 1]
mov byte [ecx + ebx - 1], dl
cmp ebp, esi
jl 0x100d2da1
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x6c]
jmp case.default.0x100d2b93
test esi, esi
jle case.default.0x100d2b93
mov eax, ecx
mov dword [esp + 0x34], esi
sub eax, ebx
mov edx, ebp
mov dword [esp + 0x64], eax
mov eax, edi
sub eax, ecx
mov dword [esp + 0x38], edx
sub edi, ebp
mov dword [esp + 0x58], eax
mov ebp, dword [esp + 0x64]
nop word [eax + eax]
movzx eax, byte [eax + ebp]
movzx esi, byte [edi + edx]
movzx edx, byte [ebp]
mov dword [esp + 0x40], eax
mov ecx, edx
sub ecx, eax
mov dword [esp + 0x5c], esi
add esi, ecx
mov dword [esp + 0x3c], edx
mov eax, esi
sub esi, dword [esp + 0x40]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x64], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x60], eax
mov eax, esi
cdq
mov ecx, eax
mov eax, dword [esp + 0x64]
xor ecx, edx
sub ecx, edx
mov edx, dword [esp + 0x60]
cmp eax, edx
jg 0x100d2e53
cmp eax, ecx
jle 0x100d2e62
mov eax, dword [esp + 0x40]
cmp edx, ecx
cmovle eax, dword [esp + 0x5c]
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0x38]
mov al, byte [edx]
inc edx
add al, byte [esp + 0x3c]
mov byte [ebx + ebp], al
inc ebp
sub dword [esp + 0x34], 1
mov eax, dword [esp + 0x58]
mov dword [esp + 0x38], edx
jne 0x100d2e00
jmp 0x100d2bdb
mov edi, dword [esp + 0x1c]
xor esi, esi
test edi, edi
jle 0x100d2bdf
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x64], eax
mov eax, ebp
mov ebx, dword [esp + 0x64]
sub eax, ecx
mov dword [esp + 0x60], eax
mov ebp, eax
nop dword [eax]
mov al, byte [ebx + esi]
lea edx, [ecx + esi]
shr al, 1
inc esi
add al, byte [edx + ebp]
mov byte [edx], al
cmp esi, edi
jl 0x100d2eb0
jmp 0x100d2bd7
xor edi, edi
test esi, esi
jle case.default.0x100d2b93
mov eax, ecx
mov dword [esp + 0x64], ebp
sub eax, ebx
sub ebp, ecx
mov dword [esp + 0x60], 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 + 0x1c]
cmp edi, esi
jl 0x100d2ee1
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x6c]
jmp case.default.0x100d2b93
mov bl, 1
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x20], ecx
cmp edi, 4
jne 0x100d2f6e
mov ebp, ecx
cmp ebp, 2
jl 0x100d2f5c
mov edi, ebp
mov dword [esp + 0x20], ecx
shr edi, 1
mov eax, edi
neg eax
lea ebp, [ebp + eax*2]
nop dword [eax + eax]
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 0x100d2f30
test ebp, ebp
jle 0x100d31a8
mov cl, byte [esi]
shr cl, 4
jmp 0x100d319d
cmp edi, 2
jne 0x100d302a
mov ebp, ecx
cmp ebp, 4
jl 0x100d2fe6
mov edi, ebp
mov dword [esp + 0x20], ecx
shr edi, 2
mov eax, edi
neg eax
lea ebp, [ebp + eax*4]
nop
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 0x100d2f90
test ebp, ebp
jle 0x100d2ffb
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 0x100d3014
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 0x100d31a8
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x100d319d
cmp edi, 1
jne 0x100d31a8
mov edi, ecx
mov dword [esp + 0x20], ecx
cmp edi, 8
jl 0x100d30ff
mov ebp, edi
mov dword [esp + 0x20], ecx
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 0x100d3052
test edi, edi
jle 0x100d3114
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 0x100d312d
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 0x100d3146
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 0x100d315f
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 0x100d3178
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 0x100d3191
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 0x100d31a8
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 + 0x28]
cmp ebx, dword [esp + 0x70]
je 0x100d3223
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x74]
dec ecx
mov edx, dword [eax + 0xc]
add edx, dword [esp + 0x6c]
cmp ebx, 1
jne 0x100d31e2
test ecx, ecx
js 0x100d3223
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 0x100d31d0
jmp 0x100d3223
test ecx, ecx
js 0x100d3223
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 0x100d3200
mov ecx, dword [esp + 0x6c]
add ecx, dword [esp + 0x30]
sub dword [esp + 0x78], 1
mov ebx, dword [esp + 0x64]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x6c], ecx
jne 0x100d2c22
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x58
ret 0x18
cmp edi, 0x10
jne 0x100d328d
mov ebx, dword [esp + 0x70]
imul ebx, dword [esp + 0x74]
mov ecx, dword [esp + 0x24]
mov esi, dword [ecx + 0xc]
mov edx, esi
imul ebx, eax
test ebx, ebx
je 0x100d328d
nop
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 0x100d3270
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x58
ret 0x18
mov eax, dword [esp + 0x24]
mov dword [eax + 0xc], 0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x58
ret 0x18