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

Disassembly:
sub esp, 0x874
push ebx
push ebp
push esi
mov esi, dword [esp + 0x884]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x14], ecx
mov ecx, dword [esi + 8]
mov dword [esp + 0x28], edx
mov edx, dword [esi + 0xc]
mov dword [esp + 0x6c], eax
mov eax, dword [esi + 4]
push edi
mov edi, dword [esi + 0x24]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x80], edx
lea ecx, [esp + 0x84]
lea edx, [esp + 0x484]
mov dword [esp + 0x1c], eax
lea ebp, [esi + 0x40]
lea eax, [esi + 0x50]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
test edi, edi
jle 0x439ce2
mov ecx, dword [esp + 0x2c]
sub eax, ebp
lea ebx, [ebp + ecx*4]
mov dword [esp + 0x40], eax
mov dword [esp + 0x28], edi
mov eax, dword [esp + 0x1c]
add eax, eax
add eax, eax
push eax
mov eax, dword [esp + 0x44]
mov edx, dword [eax + ebx]
mov eax, dword [eax + ebp]
push edx
push eax
call 0x4799fe
mov eax, dword [esp + 0x28]
mov ecx, dword [ebx]
mov edx, dword [ebp]
add eax, eax
add eax, eax
push eax
push ecx
push edx
call 0x4799fe
add esp, 0x18
add ebx, 4
add ebp, 4
sub dword [esp + 0x28], 1
jne 0x439ca3
mov ecx, dword [esp + 0x2c]
lea eax, [edi*4]
lea edi, [esi + 0x60]
push eax
lea edx, [edi + ecx*4]
push edx
push edi
call dword [0x302c7108]
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x24]
sub eax, ecx
add eax, eax
add eax, eax
push eax
lea eax, [edi + ecx*4]
push 0
push eax
call 0x4799ec
mov ecx, dword [esp + 0x34]
lea edx, [ecx*4]
push edx
lea eax, [esi + 0x70]
push 0
push eax
call 0x4799ec
xor edi, edi
add esp, 0x24
cmp dword [esp + 0x894], edi
mov dword [esp + 0x40], edi
jle 0x43a429
jmp 0x439d57
mov esi, dword [esp + 0x888]
mov edx, dword [esi + 0x20]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0x28], edx
lea edx, [esp + 0x84]
mov eax, 0x380
mov ecx, 0x80
cmp dword [esp + 0x30], edx
je 0x439d8a
sub dword [esp + 0x30], ecx
sub dword [esp + 0x34], ecx
jmp 0x439e73
add dword [esp + 0x30], eax
add dword [esp + 0x34], eax
cmp dword [esp + 0x3c], 0
jle 0x439e73
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x890]
mov ecx, dword [esp + 0x88c]
mov edx, dword [esp + 0x3c]
add eax, 0xffffff80
sub ecx, ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], edx
jmp 0x439dc6
mov ecx, dword [esp + 0x18]
mov ecx, dword [ebx + ecx]
mov edx, dword [ecx + edi*4]
mov dword [eax + 0x80], edx
mov edx, dword [ebx]
mov ebp, dword [edx + edi*4]
mov dword [eax + 0x480], ebp
mov ebp, dword [ecx + edi*4 + 4]
mov dword [eax], ebp
mov ebp, dword [edx + edi*4 + 4]
mov dword [eax + 0x400], ebp
mov ebp, dword [ecx + edi*4 + 8]
mov dword [eax - 0x80], ebp
mov ebp, dword [edx + edi*4 + 8]
mov dword [eax + 0x380], ebp
mov ebp, dword [ecx + edi*4 + 0xc]
mov dword [eax - 0x100], ebp
mov ebp, dword [edx + edi*4 + 0xc]
mov dword [eax + 0x300], ebp
mov ebp, dword [ecx + edi*4 + 0x10]
mov dword [eax - 0x180], ebp
mov ebp, dword [edx + edi*4 + 0x10]
mov dword [eax + 0x280], ebp
mov ebp, dword [ecx + edi*4 + 0x14]
mov dword [eax - 0x200], ebp
mov ebp, dword [edx + edi*4 + 0x14]
mov dword [eax + 0x200], ebp
mov ebp, dword [ecx + edi*4 + 0x18]
mov ecx, dword [ecx + edi*4 + 0x1c]
mov dword [eax - 0x280], ebp
mov ebp, dword [edx + edi*4 + 0x18]
mov edx, dword [edx + edi*4 + 0x1c]
mov dword [eax + 0x180], ebp
mov dword [eax - 0x300], ecx
mov dword [eax + 0x100], edx
add eax, 4
add ebx, 4
sub dword [esp + 0x1c], 1
jne 0x439dc2
mov esi, dword [esi + 0x18]
mov eax, dword [esp + 0x3c]
sub eax, esi
cmp dword [esp + 0x2c], eax
mov dword [esp + 0x1c], esi
jg 0x43a417
lea ebx, [ebx]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
lea ebp, [esi + 2]
lea edx, [edx + ecx*4 - 8]
mov esi, ebp
xor ecx, ecx
mov dword [esp + 0x10], edx
test esi, esi
je 0x439ec3
jmp 0x439eb0
mov eax, dword [edx]
mov ebx, eax
sar ebx, 0x1f
xor ebx, eax
add edx, 4
or ecx, ebx
sub esi, 1
jne 0x439eb0
not ecx
xor eax, eax
test ecx, ecx
jns 0x439ed7
jmp 0x439ed0
add ecx, ecx
inc eax
test ecx, ecx
js 0x439ed0
mov edx, dword [esp + 0x2c]
dec eax
xor ecx, ecx
test eax, eax
setl cl
mov ebx, ebp
dec ecx
and ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x14], ecx
lea eax, [eax + edx*4 - 8]
xor ecx, ecx
mov dword [esp + 0x18], eax
mov esi, eax
test ebx, ebx
je 0x439f17
mov edx, dword [esi]
mov eax, edx
sar eax, 0x1f
xor eax, edx
add esi, 4
or ecx, eax
sub ebx, 1
jne 0x439f00
mov eax, dword [esp + 0x18]
not ecx
xor edx, edx
test ecx, ecx
jns 0x439f27
nop
add ecx, ecx
inc edx
test ecx, ecx
js 0x439f20
dec edx
xor ecx, ecx
test edx, edx
setl cl
dec ecx
and ecx, edx
mov edx, dword [esp + 0x14]
cmp ecx, edx
jl 0x439f3c
mov ecx, edx
dec ecx
xor edx, edx
test ecx, ecx
setl dl
dec edx
and edx, ecx
mov esi, edx
mov ecx, esi
mov edx, ebp
call fcn.00439b90
mov eax, dword [esp + 0x10]
mov ecx, esi
mov edx, ebp
call fcn.00439b90
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
lea ecx, [ecx + eax*4]
lea eax, [edx + eax*4]
push eax
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x48]
push edx
call fcn.00447530
add esp, 8
cmp dword [esp + 0x68], 0
lea eax, [eax + esi*2]
mov dword [esp + 0x7c], eax
jne 0x439fc8
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x50]
mov ecx, dword [esp + 0x44]
xor ebp, ebp
sar eax, 2
mov dword [esp + 0x78], ebp
sar esi, 2
mov dword [esp + 0x74], eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
imul dword [esp + 0x48]
mov dword [esp + 0x18], edx
mov ebx, dword [esp + 0x18]
sar ebx, 1
jmp 0x43a13d
mov edi, dword [esp + 0x50]
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x10]
imul dword [esp + 0x58]
mov dword [esp + 0x10], edx
mov ebx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x14]
imul dword [esp + 0x64]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
imul dword [esp + 0x48]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
sar ecx, 1
sar eax, 1
sub ecx, eax
sar esi, 1
sub ecx, esi
mov ebp, ecx
mov dword [esp + 0x10], ebx
mov eax, dword [esp + 0x10]
imul dword [esp + 0x58]
mov dword [esp + 0x10], edx
mov esi, dword [esp + 0x10]
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x14]
imul dword [esp + 0x64]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
imul dword [esp + 0x48]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
sar ecx, 1
sar eax, 1
sub ecx, eax
sar esi, 1
add ecx, esi
mov ebx, ecx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x10]
imul dword [esp + 0x68]
mov dword [esp + 0x10], edx
mov esi, dword [esp + 0x10]
mov dword [esp + 0x14], ebp
mov eax, dword [esp + 0x14]
imul dword [esp + 0x58]
shl edx, 1
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x18]
imul dword [esp + 0x64]
shl edx, 1
mov dword [esp + 0x18], edx
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x5c]
inc ecx
sar esi, cl
mov dword [esp + 0x10], edx
add esi, dword [esp + 0x18]
add esi, edi
mov eax, dword [esp + 0x10]
imul dword [esp + 0x68]
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x14]
imul dword [esp + 0x58]
shl edx, 1
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebp
mov eax, dword [esp + 0x18]
imul dword [esp + 0x64]
shl edx, 1
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x68]
sar edi, cl
mov dword [esp + 0x14], eax
sub edi, dword [esp + 0x18]
add edi, ebx
mov dword [esp + 0x74], edi
mov eax, dword [esp + 0x14]
imul dword [esp + 0x48]
shl edx, 1
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
imul dword [esp + 0x1c]
mov dword [esp + 0x18], edx
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x40]
sar ebx, cl
test ebx, ebx
jne 0x43a16b
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x888]
add ebx, ebx
add ebx, ebx
mov ecx, dword [ebx + edx + 0x50]
mov dword [ecx + edi*4], 0
mov eax, dword [ebx + edx + 0x40]
mov dword [eax + edi*4], 0
jmp 0x43a3b4
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x20]
imul dword [esp + 0x50]
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x24]
imul dword [esp + 0x5c]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
imul dword [esp + 0x48]
shl edx, 1
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], ebp
mov eax, dword [esp + 0x14]
imul dword [esp + 0x1c]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x60]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
imul dword [esp + 0x48]
shl edx, 1
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x38]
mov dword [esp + 0x1c], edx
sub ecx, dword [esp + 0x1c]
sub ecx, ebp
add ecx, esi
test ecx, ecx
jg 0x43a209
neg ecx
mov ebp, 0x431bde80
mov dword [esp + 0x38], ebp
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x38]
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x1c]
sar esi, 0x13
sar ebx, 1
add esi, ebx
sub esi, ecx
test esi, esi
jg 0x43a235
neg esi
mov dword [esp + 0x38], ebp
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x38]
shl edx, 1
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x1c]
xor ecx, ecx
mov eax, edx
test edx, edx
je 0x43a26b
jge 0x43a25b
not eax
not eax
xor ecx, ecx
test eax, eax
jns 0x43a26a
add eax, eax
inc ecx
test eax, eax
js 0x43a263
dec ecx
lea eax, [ecx - 2]
mov ecx, eax
test eax, eax
jle 0x43a278
shl edx, cl
jmp 0x43a27c
neg ecx
sar edx, cl
xor ebx, ebx
mov ecx, esi
test esi, esi
je 0x43a298
jge 0x43a288
not ecx
not ecx
xor ebx, ebx
test ecx, ecx
jns 0x43a297
add ecx, ecx
inc ebx
test ecx, ecx
js 0x43a290
dec ebx
mov ecx, ebx
shl esi, cl
test edx, edx
jle 0x43a360
test esi, esi
je 0x43a360
sub eax, ebx
add eax, 0x13
cmp eax, 0x1f
jge 0x43a321
mov ecx, eax
test eax, eax
jge 0x43a326
sar edx, 1
mov ebx, edx
neg eax
sar esi, 1
xor edx, edx
test ebx, ebx
je 0x43a2e0
lea ebp, [edx + 0xf]
lea ecx, [ecx]
add ebx, ebx
add edx, edx
cmp ebx, esi
jl 0x43a2db
sub ebx, esi
inc edx
sub ebp, 1
jne 0x43a2d0
shl edx, 0x10
xor ebx, ebx
mov esi, edx
test edx, edx
je 0x43a2ff
jge 0x43a2ef
not esi
not esi
xor ebx, ebx
test esi, esi
jns 0x43a2fe
add esi, esi
inc ebx
test esi, esi
js 0x43a2f7
dec ebx
cmp eax, ebx
jl 0x43a305
mov eax, ebx
mov ebx, dword [esp + 0x28]
add ebx, ebx
mov ecx, eax
add ebx, ebx
shl edx, cl
mov ecx, dword [esp + 0x888]
mov eax, dword [ebx + ecx + 0x50]
mov dword [eax + edi*4], edx
jmp 0x43a37a
mov ecx, 0x1f
sar edx, 1
sar esi, 1
xor eax, eax
test edx, edx
je 0x43a343
lea ebx, [eax + 0xf]
add edx, edx
add eax, eax
cmp edx, esi
jl 0x43a33e
sub edx, esi
inc eax
sub ebx, 1
jne 0x43a333
mov ebx, dword [esp + 0x28]
add ebx, ebx
add ebx, ebx
shl eax, 0x10
sar eax, cl
mov ecx, dword [esp + 0x888]
mov edx, dword [ebx + ecx + 0x50]
mov dword [edx + edi*4], eax
jmp 0x43a37a
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x888]
add ebx, ebx
add ebx, ebx
mov eax, dword [ebx + ecx + 0x50]
mov dword [eax + edi*4], 0
mov eax, dword [esp + 0x48]
test eax, eax
je 0x43a395
cmp dword [esp + 0x50], 0
jl 0x43a434
test eax, eax
jl 0x43a43c
lea eax, [edi + 1]
and eax, 1
add eax, eax
mov edx, 1
sub edx, eax
lea eax, [ecx + 0x40]
mov eax, dword [ebx + eax]
mov dword [eax + edi*4], edx
mov edx, dword [esp + 0x888]
mov ecx, dword [esp + 0x898]
mov eax, dword [esp + 0x7c]
lea eax, [eax + ecx*2 + 4]
cmp eax, 0x1f
mov ecx, 0x1f
jg 0x43a3cf
mov ecx, eax
mov esi, dword [esp + 0x44]
mov ebp, esi
sar ebp, cl
add dword [ebx + edx + 0x60], ebp
cmp eax, 0x1f
jle 0x43a3e5
mov eax, 0x1f
inc dword [esp + 0x28]
mov ecx, eax
sar esi, cl
mov ecx, dword [esp + 0x3c]
lea eax, [edx + 0x70]
add dword [eax + edi*4], esi
mov eax, dword [esp + 0x2c]
mov esi, dword [edx + 0x1c]
add eax, dword [esp + 0x80]
sub ecx, esi
cmp eax, ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], eax
jle 0x439e90
inc edi
cmp edi, dword [esp + 0x894]
mov dword [esp + 0x40], edi
jl 0x439d50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x874
ret
test eax, eax
jl 0x43a395
mov eax, edi
jmp 0x43a398