Function at 0x42ac40
Capabilities:
Encode data using xor
Write file on windows

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
mov ebx, eax
sub esp, 0x3c
mov esi, dword [eax + 8]
mov dword [esp + 0x20], ecx
test esi, esi
je 0x429a62
lea ecx, [esi + edx]
xor eax, eax
nop
movzx edi, byte [edx]
add edx, 1
add edi, eax
mov eax, edi
shl eax, 0xa
add eax, edi
mov edi, eax
shr edi, 6
xor eax, edi
cmp ecx, edx
jne 0x429850
lea edx, [eax + eax*8]
mov eax, edx
shr eax, 0xb
xor edx, eax
mov eax, edx
shl eax, 0xf
add eax, edx
mov edi, dword [ebx + 0x1c]
xor edx, edx
div dword [ebx + 4]
test edi, edi
je 0x429a50
mov eax, dword [ebx + 0x18]
imul eax, edx
add edi, eax
mov dword [esp + 0x24], edi
sete al
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x4298aa
test al, al
jne 0x4299c1
mov eax, edx
mov edi, dword [ebx + 0x20]
mov ecx, dword [ebx + 0xc]
shr eax, 3
movzx eax, byte [edi + eax]
imul ecx, edx
and edx, 7
add ecx, dword [ebx + 0x10]
bt eax, edx
jb 0x429975
mov edx, dword [esp + 0x20]
mov eax, dword [ecx]
mov dword [esp + 0x28], 0
test edx, edx
je 0x4298e7
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx]
mov dword [esp + 0x28], ecx
xor edx, edx
test eax, eax
je 0x429a3c
mov ecx, dword [eax]
mov dword [esp + 0x24], ecx
test ecx, ecx
je 0x429a3c
lea edx, [eax + 4]
mov dword [esp + 0x2c], ebx
xor edi, edi
mov ebx, edx
jmp 0x42991f
add edi, 1
add ebx, esi
cmp edi, dword [esp + 0x24]
je 0x429a70
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov dword [esp], ebp
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x429910
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov edx, 1
test esi, esi
je 0x429a3c
mov eax, dword [ebx + 0x14]
mov ecx, edi
mov ebx, dword [esp + 0x28]
mov dword [esp], esi
mov dword [esp + 0x20], edx
imul ecx, eax
mov dword [esp + 8], eax
lea ecx, [ebx + ecx + 4]
mov dword [esp + 4], ecx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x20]
jmp 0x429a3c
mov dword [esp + 8], esi
mov dword [esp + 4], ebp
mov dword [esp], ecx
call sub.msvcrt.dll_memcmp
xor edx, edx
test eax, eax
jne 0x429a3c
mov esi, dword [esp + 0x20]
mov edx, 1
test esi, esi
je 0x429a3c
mov eax, dword [ebx + 0x14]
mov dword [esp], esi
mov dword [esp + 0x20], edx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x20]
jmp 0x429a3c
mov ebx, dword [fcn.004a1b90]
mov dword [esp], 2
call ebx
mov dword [esp + 0x14], str.tfs_util_hashtable_contains_internal
mov dword [esp + 0x10], 0x2fc
mov dword [esp + 0xc], 0x5353a0
mov dword [esp + 8], 0x5353ab
mov dword [esp + 4], str.__s___s:_d___s__Value_requested_for_hash_table_with_no_values.
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call ebx
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x5353f3
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call ebx
mov dword [esp], eax
call sub.msvcrt.dll_fflush
xor edx, edx
add esp, 0x3c
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 1
mov dword [esp + 0x24], 0
jmp 0x42989a
xor eax, eax
jmp 0x42987b
add esp, 0x3c
xor edx, edx
pop ebx
mov eax, edx
pop esi
pop edi
pop ebp
ret
push edi
push esi
push ebx
sub esp, 0x20
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
mov esi, dword [eax + 8]
mov edi, dword [esp + 0x40]
cmp esi, ebx
jne 0x42acf0
mov ebx, dword [eax + 0x1c]
test ebx, ebx
je 0x42ad62
mov ebx, dword [eax + 0x14]
cmp ebx, edi
je 0x42add0
mov esi, dword [fcn.004a1b90]
mov dword [esp], 2
call esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0x535861
mov dword [esp + 4], str.__s__Incorrect_value_size:__Iu__expected__Iu_
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call esi
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x5353f3
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call esi
mov dword [esp], eax
call sub.msvcrt.dll_fflush
add esp, 0x20
xor eax, eax
pop ebx
pop esi
pop edi
ret
mov edi, dword [fcn.004a1b90]
mov dword [esp], 2
call edi
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0x535861
mov dword [esp + 4], str.__s__Incorrect_key_size:__Iu__expected__Iu_
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x5353f3
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call edi
mov dword [esp], eax
call sub.msvcrt.dll_fflush
add esp, 0x20
xor eax, eax
pop ebx
pop esi
pop edi
ret
mov ebx, dword [fcn.004a1b90]
mov dword [esp], 2
call ebx
mov dword [esp + 8], 0x535861
mov dword [esp + 4], str.__s__Unable_to_get_value_for_key:_No_values_in_hashtable.
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call ebx
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x5353f3
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call ebx
mov dword [esp], eax
call sub.msvcrt.dll_fflush
jmp 0x42ace4
add esp, 0x20
pop ebx
pop esi
pop edi
jmp 0x429830