Function at 0x43d670
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 + 0x46c3cc]
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 0x43d6fc
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 0x43d6f4
dec eax
jns 0x43d6c6
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 0x43d709
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x250
ret
cmp eax, ebp
mov dword [esp + 0x34], ebp
jl 0x43db79
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 0x43d88e
test esi, esi
jge 0x43d7ad
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
add esi, edx
mov word [esp + ecx + 0x5a], 0xffff
jmp 0x43d7c0
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 0x43d871
mov edx, ebp
mov ecx, 0x46c318
sub edx, eax
dec ecx
lea edx, [esp + edx*4 + 0x160]
lea ebx, [ecx + eax]
mov dword [esp + 0x18], edx
mov edx, 0x46c218
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 0x43d849
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
mov word [esp + ecx + 0x58], ax
cmp edx, dword [esp + 0x24]
jae 0x43d85c
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 0x43d817
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x38], ebp
jne 0x43da86
mov edx, dword [esp + 0x10]
mov ax, word [esp + edx + 0x5a]
mov word [esp + 0x1e], ax
jmp 0x43da86
lea ecx, [ebx + 0x19]
cmp ecx, 0x33
jae 0x43dab1
mov eax, ebx
imul eax, edi
sub eax, esi
cmp ebx, 1
mov esi, 0x46bd18
jle 0x43d906
add eax, edx
lea ecx, [ebx - 1]
mov ebp, eax
mov dword [esp + 0x4c], ecx
sub ebp, edi
cmp ebx, 0x18
jg 0x43d8ca
mov edx, dword [ebx*4 + 0x46c354]
mov dword [esp + 0x28], edx
jmp 0x43d8ce
mov dword [esp + 0x28], esi
cmp ecx, 0x18
jg 0x43d8dc
mov edx, dword [ecx*4 + 0x46c354]
jmp 0x43d8de
mov edx, esi
cmp ebx, 6
jg 0x43d8f0
mov edi, dword [ebx*4 + 0x46c3b4]
mov dword [esp + 0x30], edi
jmp 0x43d8f4
mov dword [esp + 0x30], esi
cmp ecx, 6
jg 0x43d96e
mov ecx, dword [ecx*4 + 0x46c3b4]
mov dword [esp + 0x18], ecx
jmp 0x43d972
sub eax, edx
lea ecx, [ebx + 1]
cmp ebx, 0xffffffe8
mov dword [esp + 0x4c], ecx
lea ebp, [eax + edi]
jl 0x43d928
mov edx, ebx
not edx
mov edx, dword [edx*4 + 0x46c358]
mov dword [esp + 0x28], edx
jmp 0x43d92c
mov dword [esp + 0x28], esi
cmp ecx, 0xffffffe8
jl 0x43d93e
mov edx, ecx
not edx
mov edx, dword [edx*4 + 0x46c358]
jmp 0x43d940
mov edx, esi
cmp ebx, 0xfffffffa
jl 0x43d956
mov edi, ebx
not edi
mov edi, dword [edi*4 + 0x46c3b8]
mov dword [esp + 0x30], edi
jmp 0x43d95a
mov dword [esp + 0x30], esi
cmp ecx, 0xfffffffa
jl 0x43d96e
not ecx
mov ecx, dword [ecx*4 + 0x46c3b8]
mov dword [esp + 0x18], ecx
jmp 0x43d972
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 0x43da7e
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 0x43d9da
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 0x43da05
mov ebx, dword [esp + 0x4c]
mov ecx, eax
cmp ecx, dword [esp + 0x20]
jae 0x43da1d
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 0x43da4b
mov eax, ecx
mov ecx, dword [esp + 0x4c]
jmp 0x43da4d
mov ecx, ebx
cmp eax, dword [esp + 0x24]
jae 0x43da69
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 0x43d9d6
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 0x43db17
mov dword [esp + 0x50], edi
mov dword [esp + 0x14], ebp
jmp 0x43db55
mov esi, dword [esp + 0x14]
mov ecx, ebp
sub ecx, esi
test ecx, ecx
jle 0x43db0e
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 0x43dae9
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 0x43db01
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 0x43dac8
jmp 0x43da82
mov ecx, dword [esp + 0x14]
jmp 0x43da8a
mov edi, dword [esp + ecx*4 + 0x160]
add edx, 0x800
cmp edi, edx
jbe 0x43db38
mov edi, dword [esp + ecx*4 + 0x164]
inc ecx
cmp edi, edx
ja 0x43db28
mov dword [esp + 0x14], ecx
cmp ecx, ebp
jge 0x43db51
mov ebx, dword [esp + ecx*4 + 0x160]
add ebx, eax
mov dword [esp + ecx*4 + 0x160], ebx
inc ecx
cmp ecx, ebp
jl 0x43db3c
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 0x43d719
mov edx, dword [esp + 0x38]
test edx, edx
jge 0x43db8b
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 0x43dbec
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 0x43dbca
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x250
ret