Function at 0x43d5c0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x250
mov eax, dword [esp + 0x25c]
push ebx
push ebp
xor ebp, ebp
mov ecx, dword [eax*4 + 0x46c3dc]
mov eax, 0x1000
mov dword [esp + 0x48], eax
mov dword [esp + 0x154], eax
mov eax, dword [esp + 0x270]
mov dword [esp + 0x38], ecx
or ecx, 0xffffffff
push esi
cmp eax, ebp
push edi
mov word [esp + 0x1c], bp
mov word [esp + 0x1e], bp
mov dword [esp + 0x14], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x48], eax
jl 0x43d64c
mov ecx, dword [esp + 0x270]
xor edx, edx
mov dx, word [ecx + eax*2]
mov ecx, dword [esp + 0x264]
cmp word [ecx + edx*2], bp
jne 0x43d644
dec eax
jns 0x43d616
pop edi
pop esi
mov dword [esp + 0x40], eax
pop ebp
xor eax, eax
pop ebx
add esp, 0x250
ret
cmp eax, ebp
mov dword [esp + 0x48], eax
jge 0x43d659
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x250
ret
cmp eax, ebp
mov dword [esp + 0x34], ebp
jl 0x43dac9
mov dword [esp + 0x10], ebp
mov edx, dword [esp + 0x270]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x20], 0xf0000000
mov cx, word [edx + ebp*2]
mov edx, dword [esp + 0x274]
add ecx, ecx
mov ax, word [ecx + edx]
imul eax, dword [esp + 0x26c]
sar eax, 4
lea edx, [eax - 1]
lea edi, [eax + eax]
or edx, 1
lea eax, [edx + edi]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x268]
movsx esi, word [ecx + eax]
mov eax, dword [esp + 0x264]
movsx ebx, word [ecx + eax]
mov eax, esi
mov ecx, dword [esp + 0x24]
imul eax, esi
imul eax, dword [esp + 0x40]
add ecx, eax
mov dword [esp + 0x44], ebx
mov dword [esp + 0x24], ecx
lea ecx, [ebx + 1]
cmp ecx, 3
mov dword [esp + 0x3c], eax
jae 0x43d7de
test esi, esi
jge 0x43d6fd
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
add esi, edx
mov word [esp + ecx + 0x5a], 0xffff
jmp 0x43d710
mov eax, dword [esp + 0x10]
mov word [esp + eax + 0x5a], 1
mov eax, dword [esp + 0x2c]
sub eax, esi
mov esi, eax
mov edi, esi
mov eax, dword [esp + 0x10]
imul edi, esi
imul edi, dword [esp + 0x40]
mov ecx, dword [esp + eax + 0x15c]
mov word [esp + eax + 0x58], 1
mov eax, ebp
lea edx, [ecx + edi + 0x1800]
mov ecx, dword [esp + 0x14]
sub eax, ecx
mov dword [esp + 0x20], edx
test eax, eax
jle 0x43d7c1
mov edx, ebp
mov ecx, 0x46c328
sub edx, eax
dec ecx
lea edx, [esp + edx*4 + 0x160]
lea ebx, [ecx + eax]
mov dword [esp + 0x18], edx
mov edx, 0x46c228
sub edx, ecx
dec edx
mov dword [esp + 0x44], edx
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x44]
mov esi, dword [ecx]
xor ecx, ecx
mov cl, byte [edx + ebx]
xor edx, edx
mov dl, byte [ebx]
add esi, edi
shl ecx, 0xb
shl edx, 0xb
add ecx, esi
add edx, esi
cmp ecx, dword [esp + 0x20]
jae 0x43d799
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
mov word [esp + ecx + 0x58], ax
cmp edx, dword [esp + 0x24]
jae 0x43d7ac
mov dword [esp + 0x24], edx
mov word [esp + 0x1c], ax
mov dword [esp + 0x38], ebp
mov esi, dword [esp + 0x18]
dec eax
add esi, 4
dec ebx
test eax, eax
mov dword [esp + 0x18], esi
jg 0x43d767
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x38], ebp
jne 0x43d9d6
mov edx, dword [esp + 0x10]
mov ax, word [esp + edx + 0x5a]
mov word [esp + 0x1e], ax
jmp 0x43d9d6
lea ecx, [ebx + 0x19]
cmp ecx, 0x33
jae 0x43da01
mov eax, ebx
imul eax, edi
sub eax, esi
cmp ebx, 1
mov esi, 0x46bd28
jle 0x43d856
add eax, edx
lea ecx, [ebx - 1]
mov ebp, eax
mov dword [esp + 0x4c], ecx
sub ebp, edi
cmp ebx, 0x18
jg 0x43d81a
mov edx, dword [ebx*4 + 0x46c364]
mov dword [esp + 0x28], edx
jmp 0x43d81e
mov dword [esp + 0x28], esi
cmp ecx, 0x18
jg 0x43d82c
mov edx, dword [ecx*4 + 0x46c364]
jmp 0x43d82e
mov edx, esi
cmp ebx, 6
jg 0x43d840
mov edi, dword [ebx*4 + 0x46c3c4]
mov dword [esp + 0x30], edi
jmp 0x43d844
mov dword [esp + 0x30], esi
cmp ecx, 6
jg 0x43d8be
mov ecx, dword [ecx*4 + 0x46c3c4]
mov dword [esp + 0x18], ecx
jmp 0x43d8c2
sub eax, edx
lea ecx, [ebx + 1]
cmp ebx, 0xffffffe8
mov dword [esp + 0x4c], ecx
lea ebp, [eax + edi]
jl 0x43d878
mov edx, ebx
not edx
mov edx, dword [edx*4 + 0x46c368]
mov dword [esp + 0x28], edx
jmp 0x43d87c
mov dword [esp + 0x28], esi
cmp ecx, 0xffffffe8
jl 0x43d88e
mov edx, ecx
not edx
mov edx, dword [edx*4 + 0x46c368]
jmp 0x43d890
mov edx, esi
cmp ebx, 0xfffffffa
jl 0x43d8a6
mov edi, ebx
not edi
mov edi, dword [edi*4 + 0x46c3c8]
mov dword [esp + 0x30], edi
jmp 0x43d8aa
mov dword [esp + 0x30], esi
cmp ecx, 0xfffffffa
jl 0x43d8be
not ecx
mov ecx, dword [ecx*4 + 0x46c3c8]
mov dword [esp + 0x18], ecx
jmp 0x43d8c2
mov dword [esp + 0x18], esi
mov ecx, eax
imul ebp, ebp
imul ecx, eax
imul ebp, dword [esp + 0x40]
imul ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x14]
sub esi, edi
sub ebp, ecx
test esi, esi
mov dword [esp + 0x54], ecx
jle 0x43d9ce
lea eax, [edx - 1]
mov edx, dword [esp + 0x34]
sub edx, esi
lea edi, [eax + esi]
lea edx, [esp + edx*4 + 0x160]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x28]
sub edx, eax
dec edx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x30]
sub edx, eax
dec edx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x18]
sub edx, eax
dec edx
mov dword [esp + 0x18], edx
jmp 0x43d92a
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
mov eax, dword [esp + 0x28]
add edx, ecx
xor ecx, ecx
mov cl, byte [eax + edi]
xor eax, eax
mov al, byte [edi]
shl eax, 0xb
shl ecx, 0xb
add eax, edx
add ecx, edx
add eax, ebp
cmp eax, ecx
jae 0x43d955
mov ebx, dword [esp + 0x4c]
mov ecx, eax
cmp ecx, dword [esp + 0x20]
jae 0x43d96d
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], ecx
mov word [esp + eax + 0x58], si
mov word [esp + eax + 0x5a], bx
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
xor eax, eax
mov al, byte [ecx + edi]
xor ecx, ecx
mov cl, byte [ebx + edi]
mov ebx, dword [esp + 0x44]
shl ecx, 0xb
shl eax, 0xb
add ecx, edx
add eax, edx
add ecx, ebp
cmp ecx, eax
jae 0x43d99b
mov eax, ecx
mov ecx, dword [esp + 0x4c]
jmp 0x43d99d
mov ecx, ebx
cmp eax, dword [esp + 0x24]
jae 0x43d9b9
mov edx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
mov word [esp + 0x1c], si
mov word [esp + 0x1e], cx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x2c]
dec esi
add edx, 4
dec edi
test esi, esi
mov dword [esp + 0x2c], edx
jg 0x43d926
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
mov dword [esp + edx + 0x160], edi
mov edx, dword [esp + 0x50]
lea esi, [eax + edx]
cmp edi, esi
jae 0x43da67
mov dword [esp + 0x50], edi
mov dword [esp + 0x14], ebp
jmp 0x43daa5
mov esi, dword [esp + 0x14]
mov ecx, ebp
sub ecx, esi
test ecx, ecx
jle 0x43da5e
mov eax, ebp
sub eax, ecx
lea esi, [esp + eax*4 + 0x160]
mov eax, dword [esi]
mov edx, dword [esp + 0x20]
add eax, 0xf000
cmp eax, edx
jae 0x43da39
mov edx, dword [esp + 0x10]
mov dword [esp + 0x20], eax
mov word [esp + edx + 0x58], cx
mov word [esp + edx + 0x5a], bx
cmp eax, dword [esp + 0x24]
jae 0x43da51
mov dword [esp + 0x24], eax
mov word [esp + 0x1c], cx
mov word [esp + 0x1e], bx
mov dword [esp + 0x38], ebp
dec ecx
add esi, 4
test ecx, ecx
jg 0x43da18
jmp 0x43d9d2
mov ecx, dword [esp + 0x14]
jmp 0x43d9da
mov edi, dword [esp + ecx*4 + 0x160]
add edx, 0x800
cmp edi, edx
jbe 0x43da88
mov edi, dword [esp + ecx*4 + 0x164]
inc ecx
cmp edi, edx
ja 0x43da78
mov dword [esp + 0x14], ecx
cmp ecx, ebp
jge 0x43daa1
mov ebx, dword [esp + ecx*4 + 0x160]
add ebx, eax
mov dword [esp + ecx*4 + 0x160], ebx
inc ecx
cmp ecx, ebp
jl 0x43da8c
mov dword [esp + 0x50], esi
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x48]
inc ebp
add ecx, 4
cmp ebp, eax
mov dword [esp + 0x34], ebp
mov dword [esp + 0x10], ecx
jle 0x43d669
mov edx, dword [esp + 0x38]
test edx, edx
jge 0x43dadb
mov eax, dword [esp + 0x27c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x250
ret
mov ebx, dword [esp + 0x264]
mov ecx, 0x20
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x270]
mov ax, word [edi + edx*2]
mov ecx, eax
mov ax, word [esp + 0x1e]
mov word [ebx + ecx*2], ax
movsx ecx, word [esp + 0x1c]
movsx eax, ax
sub edx, ecx
mov ecx, edx
cdq
mov esi, eax
xor esi, edx
sub esi, edx
test ecx, ecx
jl 0x43db3c
mov ax, word [esp + ecx*4 + 0x5a]
xor edx, edx
mov dx, word [edi + ecx*2]
mov word [ebx + edx*2], ax
movsx eax, ax
cdq
xor eax, edx
sub eax, edx
add esi, eax
movsx eax, word [esp + ecx*4 + 0x58]
sub ecx, eax
jns 0x43db1a
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x250
ret