Function at 0x42f430
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x10
push ebx
push esi
push edi
push ebp
mov eax, dword [ecx + 0x8dc0]
mov edi, ecx
mov edx, dword [eax + 0x40]
movsx ecx, word [eax + 0x7c]
mov eax, dword [edx + ecx*4]
mov cx, word [esp + 0x30]
mov dword [esp + 0x1c], eax
cmp cx, word [esp + 0x28]
jge 0x42f46b
mov ax, cx
mov cx, word [esp + 0x28]
mov word [esp + 0x30], cx
mov word [esp + 0x28], ax
mov cx, word [esp + 0x2c]
cmp cx, word [esp + 0x24]
jge 0x42f489
mov ax, cx
mov cx, word [esp + 0x24]
mov word [esp + 0x2c], cx
mov word [esp + 0x24], ax
cmp word [esp + 0x28], 0
jge 0x42f498
mov word [esp + 0x28], 0
movsx ecx, word [esp + 0x30]
mov eax, dword [edi + 0xc]
cmp ecx, eax
jl 0x42f4ab
dec ax
mov word [esp + 0x30], ax
cmp word [esp + 0x24], 0
jge 0x42f4ba
mov word [esp + 0x24], 0
movsx ecx, word [esp + 0x2c]
mov eax, dword [edi + 8]
cmp ecx, eax
jl 0x42f4cd
dec ax
mov word [esp + 0x2c], ax
mov al, byte [esp + 0x3c]
test al, al
je 0x42f5ff
mov bp, word [esp + 0x38]
test bp, bp
je 0x42f597
mov ax, word [esp + 0x28]
mov word [esp + 0x12], ax
cmp word [esp + 0x30], ax
jl 0x42f5ff
mov ax, word [esp + 0x24]
cmp word [esp + 0x2c], ax
jl 0x42f580
movsx ecx, word [esp + 0x12]
lea esi, [ecx*4]
movsx edx, ax
mov ecx, dword [edi + 0x8d8c]
nop
lea edx, [edx + edx*2]
mov ebx, dword [ecx + esi]
lea ecx, [ebx + edx*8]
mov dl, byte [ebx + edx*8 + 5]
shr dl, 5
and edx, 0xffff00ff
add dx, bp
jns 0x42f53e
xor dx, dx
jmp 0x42f549
cmp dx, 0xff
jle 0x42f549
mov dx, 0xff
shl dl, 5
mov bl, dl
xor bl, byte [ecx + 5]
and bl, 0x1f
xor bl, dl
mov dl, bl
mov byte [ecx + 5], bl
shr dl, 5
cmp dl, 8
jbe 0x42f569
and bl, 0x1f
mov byte [ecx + 5], bl
mov dl, byte [ecx + 5]
test dl, 0xe0
jae 0x42f577
and dl, 0x1f
mov byte [ecx + 5], dl
inc ax
cmp word [esp + 0x2c], ax
jge 0x42f514
inc word [esp + 0x12]
mov ax, word [esp + 0x12]
cmp word [esp + 0x30], ax
jge 0x42f4fc
jmp 0x42f5ff
mov al, byte [esp + 0x34]
cmp al, 8
jbe 0x42f5a4
mov byte [esp + 0x34], 8
mov ax, word [esp + 0x28]
cmp word [esp + 0x30], ax
jl 0x42f5ff
mov si, word [esp + 0x24]
cmp word [esp + 0x2c], si
jl 0x42f5f6
movsx ecx, ax
lea ebx, [ecx*4]
mov cl, byte [esp + 0x34]
shl cl, 5
movsx ebp, si
inc si
mov edx, dword [edi + 0x8d8c]
lea ebp, [ebp + ebp*2]
mov edx, dword [edx + ebx]
lea ebp, [edx + ebp*8]
mov dl, byte [ebp + 5]
xor dl, cl
and dl, 0x1f
xor dl, cl
cmp word [esp + 0x2c], si
mov byte [ebp + 5], dl
jge 0x42f5cd
inc ax
cmp word [esp + 0x30], ax
jge 0x42f5b0
cmp word [esp + 0x28], 0
jle 0x42f60c
dec word [esp + 0x28]
movsx eax, word [esp + 0x30]
mov ecx, dword [edi + 0xc]
dec ecx
cmp ecx, eax
jle 0x42f61e
inc word [esp + 0x30]
cmp word [esp + 0x24], 0
jle 0x42f62b
dec word [esp + 0x24]
movsx ecx, word [esp + 0x2c]
mov eax, dword [edi + 8]
dec eax
cmp eax, ecx
jle 0x42f63d
inc word [esp + 0x2c]
mov ax, word [esp + 0x28]
mov word [esp + 0x12], ax
cmp word [esp + 0x30], ax
jl 0x42f6f9
mov si, word [esp + 0x24]
cmp word [esp + 0x2c], si
jl 0x42f6e4
movsx eax, word [esp + 0x12]
mov dword [esp + 0x18], eax
shl eax, 2
mov dword [esp + 0x14], eax
mov ecx, dword [edi + 0x8d8c]
mov eax, dword [esp + 0x14]
movsx ebx, si
mov edx, dword [ecx + eax]
mov eax, dword [esp + 0x12]
lea ecx, [ebx + ebx*2]
push eax
push esi
nop
lea ebp, [edx + ecx*8]
mov ecx, edi
call fcn.0042fac0
mov byte [ebp + 4], al
mov ebp, dword [ebp + 0x10]
test ebp, ebp
je 0x42f6bb
mov ecx, dword [ebp]
push 0
mov eax, dword [ecx + 0x3c]
mov edx, dword [ecx + 0x38]
push eax
push edx
mov eax, dword [ecx]
call dword [eax + 0x34]
fstp st(0)
mov ebp, dword [ebp + 4]
test ebp, ebp
jne 0x42f6a0
mov eax, dword [edi + 0x8dc0]
mov cl, byte [eax + 0x1d]
cmp cl, 3
je 0x42f6db
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
push eax
add ecx, 0x6c
push ebx
call fcn.00467000
inc si
cmp word [esp + 0x2c], si
jge 0x42f672
inc word [esp + 0x12]
mov ax, word [esp + 0x12]
cmp word [esp + 0x30], ax
jge 0x42f652
movsx eax, word [esp + 0x30]
movsx esi, word [esp + 0x2c]
movsx ebp, word [esp + 0x28]
movsx ebx, word [esp + 0x24]
push eax
mov ecx, edi
mov dword [esp + 0x18], eax
push esi
push ebp
push ebx
call fcn.0042bbc0
mov eax, dword [esp + 0x14]
push 0
push eax
mov ecx, edi
push esi
push ebp
push ebx
call fcn.0042ba80
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x10
ret 0x1c