Function at 0x641660
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x78]
mov edi, dword [edx]
mov dword [esp + 0x14], edi
mov edi, dword [edx + 4]
mov dword [esp + 0x18], edi
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x1c], edi
lea edi, [ecx - 8]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x80]
mov ebx, dword [eax]
mov ebp, dword [eax + 4]
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x641808
test edi, edi
js 0x641ac0
mov edx, edi
mov esi, dword [esp + 0x74]
mov dword [esp + 0x28], ebx
shr edx, 3
mov dword [esp + 0x3c], edi
lea eax, [edx*8 + 8]
mov dword [esp + 0x38], edx
mov edx, ebp
add esi, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x70]
mov dword [esp + 0x2c], esi
lea esi, [esp + 0x48]
mov dword [esp + 0x24], esi
lea esi, [esi]
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov ecx, dword [edi]
mov eax, dword [edi + 4]
add edi, 8
mov dword [esp + 8], 1
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x14]
xor ecx, edi
mov edi, dword [esp + 0x18]
xor ecx, ebx
xor eax, edi
mov dword [esp + 0x48], ecx
xor eax, edx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00595840
mov ebx, dword [esp + 0x1c]
xor ebx, dword [esp + 0x48]
mov edi, ebx
mov dword [esp + 0x28], ebx
shr ebx, 0x10
mov edx, dword [esp + 0x20]
mov eax, edi
movzx esi, bl
mov ebx, edi
xor edx, dword [esp + 0x4c]
shr eax, 0x18
mov ecx, edx
add dword [esp + 0x74], 8
shl eax, 8
shr ecx, 0x10
or eax, esi
movzx esi, bh
movzx ecx, cl
movzx ebx, bl
shl eax, 8
or eax, esi
shl eax, 8
mov ebp, eax
mov eax, edx
shr eax, 0x18
or ebx, ebp
shl eax, 8
or eax, ecx
movzx ecx, dh
shl eax, 8
or eax, ecx
movzx ecx, dl
shl eax, 8
or eax, ecx
mov edi, eax
mov eax, dword [esp + 0x74]
mov dword [eax - 8], ebx
mov dword [eax - 4], edi
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x74]
jne 0x6416f8
mov ebp, edx
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x78]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x28]
neg edx
mov eax, dword [esp + 0x34]
add dword [esp + 0x70], eax
shl edx, 3
lea eax, [ecx + edx - 0x10]
lea ecx, [edx + edi]
cmp eax, 0xfffffff8
je 0x641a10
mov edi, dword [esp + 0x70]
lea esi, [edi + eax + 8]
cmp ecx, 7
ja case.0x6417fb.0
jmp dword [ecx*4 + 0x6dd8e4]
cmp ecx, 8
jle 0x641ab0
lea eax, [ecx - 9]
mov esi, dword [esp + 0x74]
mov dword [esp + 0x2c], ebp
shr eax, 3
mov dword [esp + 0x28], ebx
lea edx, [eax*8 + 8]
mov dword [esp + 0x38], eax
add esi, edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x70]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x34], esi
lea esi, [esp + 0x48]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], edi
lea esi, [esi]
mov edi, dword [ebp]
mov eax, dword [esp + 0x1c]
add ebp, 8
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
xor eax, edi
mov dword [esp + 0x28], edi
mov edi, dword [ebp - 4]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 8], 0
xor eax, edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00595840
mov edi, dword [esp + 0x14]
xor edi, dword [esp + 0x48]
mov eax, edi
add dword [esp + 0x74], 8
xor eax, esi
mov esi, dword [esp + 0x18]
xor esi, dword [esp + 0x4c]
xor esi, ebx
mov edx, eax
mov ecx, esi
mov esi, eax
shr edx, 0x18
shr esi, 0x10
mov edi, edx
mov ebx, ecx
mov edx, esi
shr ebx, 0x10
movzx esi, dl
mov edx, edi
movzx edi, al
movzx ebx, bl
shl edx, 8
or edx, esi
movzx esi, ah
mov eax, ecx
shr eax, 0x18
shl edx, 8
shl eax, 8
or edx, esi
movzx esi, cl
or eax, ebx
movzx ebx, ch
shl edx, 8
shl eax, 8
or edx, edi
or eax, ebx
shl eax, 8
or eax, esi
mov ebx, eax
mov eax, dword [esp + 0x74]
mov dword [eax - 8], edx
mov dword [eax - 4], ebx
mov eax, dword [esp + 0x30]
cmp dword [esp + 0x74], eax
jne 0x641858
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
add dword [esp + 0x70], edx
mov ecx, dword [esp + 0x78]
mov edi, dword [esp + 0x34]
neg eax
mov ebx, dword [esp + 0x28]
shl eax, 3
mov ebp, dword [esp + 0x2c]
lea esi, [ecx + eax - 0x10]
lea ecx, [eax + edi]
mov dword [esp + 0x78], ecx
cmp esi, 0xfffffff8
je 0x641a10
mov eax, dword [esp + 0x70]
mov edi, dword [eax]
mov eax, dword [esp + 0x1c]
xor eax, edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x70]
mov edi, dword [eax + 4]
mov eax, dword [esp + 0x20]
mov dword [esp + 8], 0
xor eax, edi
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 4], eax
lea eax, [esp + 0x48]
mov dword [esp], eax
call fcn.00595840
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x48]
mov edx, dword [esp + 0x18]
xor eax, ebx
lea ebx, [ecx + esi + 8]
mov ecx, dword [esp + 0x78]
xor edx, dword [esp + 0x4c]
xor edx, ebp
cmp ecx, 8
ja case.0x6419bd.72
jmp dword [ecx*4 + 0x6dd904]
mov ecx, edx
sub ebx, 1
shr ecx, 0x18
mov byte [ebx], cl
mov ecx, edx
sub ebx, 1
shr ecx, 0x10
mov byte [ebx], cl
mov byte [ebx - 1], dh
lea ecx, [ebx - 1]
mov byte [ecx - 1], dl
lea ebx, [ecx - 1]
mov edx, eax
lea ecx, [ebx - 1]
shr edx, 0x18
mov byte [ebx - 1], dl
mov ebx, eax
lea edx, [ecx - 1]
shr ebx, 0x10
mov byte [ecx - 1], bl
mov byte [edx - 1], ah
lea ebx, [edx - 1]
mov byte [ebx - 1], al
mov ebx, dword [esp + 0x24]
mov ebp, edi
lea esi, [esi]
movzx eax, bh
mov byte [esp + 0x14], bl
mov dword [esp + 0x18], eax
mov eax, ebx
shr ebx, 0x18
shr eax, 0x10
mov dword [esp + 0x24], ebx
mov byte [esp + 0x1c], al
mov eax, ebp
mov byte [esp + 0x20], al
mov eax, ebp
movzx eax, ah
mov dword [esp + 0x28], eax
mov eax, ebp
shr ebp, 0x18
shr eax, 0x10
mov dword [esp + 0x34], ebp
mov byte [esp + 0x2c], al
movzx eax, byte [esp + 0x24]
movzx edx, byte [esp + 0x1c]
movzx esi, byte [esp + 0x34]
movzx ecx, byte [esp + 0x2c]
shl eax, 8
movzx edi, byte [esp + 0x20]
or eax, edx
movzx edx, byte [esp + 0x18]
shl esi, 8
shl eax, 8
or esi, ecx
movzx ecx, byte [esp + 0x28]
or eax, edx
movzx edx, byte [esp + 0x14]
shl esi, 8
shl eax, 8
or esi, ecx
or eax, edx
shl esi, 8
mov ecx, eax
mov eax, dword [esp + 0x80]
or esi, edi
mov dword [eax], ecx
mov dword [eax + 4], esi
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x74]
mov esi, edi
mov dword [esp + 0x30], eax
jmp 0x64194a
mov eax, edi
mov edi, dword [esp + 0x74]
mov dword [esp + 0x30], edi
jmp 0x6417e1
xor edx, edx
movzx eax, byte [esi - 1]
sub esi, 1
shl eax, 8
or eax, edx
mov ecx, eax
movzx edx, byte [esi - 1]
lea eax, [esi - 1]
mov edi, edx
or edi, ecx
lea esi, [eax - 1]
movzx eax, byte [eax - 1]
shl eax, 0x18
mov ecx, eax
movzx eax, byte [esi - 1]
lea edx, [esi - 1]
shl eax, 0x10
or ecx, eax
movzx eax, byte [edx - 1]
lea esi, [edx - 1]
shl eax, 8
or eax, ecx
movzx edx, byte [esi - 1]
or edx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 8], 1
xor eax, ebx
mov ebx, eax
mov eax, dword [esp + 0x18]
xor ebx, edx
xor eax, ebp
mov dword [esp + 0x48], ebx
xor eax, edi
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 4], eax
lea eax, [esp + 0x48]
mov dword [esp], eax
call fcn.00595840
mov ebx, dword [esp + 0x1c]
xor ebx, dword [esp + 0x48]
mov esi, ebx
mov ecx, dword [esp + 0x20]
mov edi, ebx
xor ecx, dword [esp + 0x4c]
shr esi, 8
shr edi, 0x10
mov ebp, ecx
mov edx, ebx
shr ebp, 8
mov eax, esi
shr edx, 0x18
mov byte [esp + 0x14], bl
mov byte [esp + 0x18], al
mov eax, edi
movzx ebx, bl
mov byte [esp + 0x1c], al
mov eax, ebp
mov byte [esp + 0x28], al
mov eax, ecx
shr eax, 0x10
mov byte [esp + 0x24], dl
shl edx, 8
mov dword [esp + 0x38], eax
mov byte [esp + 0x2c], al
mov eax, ecx
shr eax, 0x18
mov byte [esp + 0x20], cl
movzx ecx, cl
mov dword [esp + 0x3c], eax
mov byte [esp + 0x34], al
mov eax, edi
movzx edi, al
mov eax, esi
or edx, edi
movzx esi, al
mov eax, dword [esp + 0x3c]
shl edx, 8
or edx, esi
shl eax, 8
mov edi, edx
movzx edx, byte [esp + 0x38]
shl edi, 8
or eax, edx
mov edx, ebp
or edi, ebx
movzx edx, dl
shl eax, 8
or eax, edx
mov esi, eax
mov eax, edi
mov edi, dword [esp + 0x30]
shl esi, 8
or esi, ecx
mov dword [edi], eax
mov dword [edi + 4], esi
jmp 0x641a4a
xor edi, edi
xor eax, eax
jmp 0x641b0f
mov edx, esi
xor edi, edi
xor ecx, ecx
jmp 0x641b03
xor edi, edi
xor ecx, ecx
jmp 0x641af7
mov eax, esi
xor edi, edi
jmp 0x641aeb
xor ecx, ecx
jmp 0x641ae0
movzx eax, byte [esi - 1]
sub esi, 1
shl eax, 0x10
mov edx, eax
jmp 0x641ad2
mov edx, ebx
jmp 0x6419fa
mov ecx, ebx
jmp 0x6419ef
mov ecx, ebx
jmp 0x6419de
xor edi, edi
xor edx, edx
jmp 0x641b15