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

Disassembly:
mov eax, 0x1464
call fcn.004fa7e0
mov eax, dword [0x628560]
xor eax, esp
mov dword [esp + 0x1460], eax
mov eax, dword [esp + 0x1470]
push ebx
push ebp
mov ebp, dword [esp + 0x1474]
lea ecx, [esp + 0x1328]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1470]
push esi
push edi
mov edi, dword [ecx + 0x1f20]
mov ecx, dword [esp + 0x149c]
add ecx, 0xffffffff
cmp ecx, dword [esp + 0x1494]
mov ebx, 1
mov dword [esp + 0x24], ebp
mov dword [esp + 0x14], edx
lea esi, [esp + 0x1270]
mov dword [esp + 0x10], ebx
jl 0x58def8
jmp 0x58deab
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x1480]
cmp dword [esp + 0x1498], 0
je 0x58debc
movzx eax, word [eax]
shr eax, 1
jmp 0x58dec8
movzx ebp, byte [edx + ecx]
movzx eax, word [eax + ebp*2]
mov ebp, dword [esp + 0x24]
movzx edx, byte [edx + ecx]
movsx edx, word [ebp + edx*2]
imul edx, eax
add edx, 0x7fff
cmp edx, 0x10000
jae 0x58deef
sub ecx, ebx
cmp ecx, dword [esp + 0x1494]
jge 0x58dea0
jmp 0x58def8
cmp ecx, dword [esp + 0x1494]
jge 0x58df15
mov eax, dword [esp + 0x149c]
lea ecx, [eax + eax]
push ecx
push 0
push ebp
call fcn.004f9940
add esp, 0xc
xor eax, eax
jmp 0x58e9cf
mov dword [esp + 0x20], ecx
lea esp, [esp]
mov edx, dword [esp + 0x14]
movzx eax, byte [edx + ecx]
mov edx, dword [esp + 0x24]
movsx ebp, word [edx + eax*2]
mov eax, ebp
cdq
xor eax, edx
sub eax, edx
mov dword [esp + ecx*4 + 0x158], eax
xor eax, eax
test ebp, ebp
setge al
lea eax, [eax + eax - 1]
mov dword [esp + ecx*4 + 0x58], eax
sub ecx, ebx
cmp ecx, dword [esp + 0x1494]
jge 0x58df20
xor ecx, ecx
cmp dword [esp + 0x149c], 0x40
mov eax, 0x40000
mov dword [esp + 0x1288], ecx
mov dword [esp + 0x128c], eax
mov dword [esp + 0x12a0], ecx
mov dword [esp + 0x12a4], eax
mov dword [esp + 0x12b8], ecx
mov dword [esp + 0x12bc], eax
mov dword [esp + 0x12d0], ecx
mov dword [esp + 0x12d4], eax
mov dword [esp + 0x12e8], ecx
mov dword [esp + 0x12ec], eax
mov dword [esp + 0x1300], ecx
mov dword [esp + 0x1304], eax
mov dword [esp + 0x1318], ecx
mov dword [esp + 0x131c], eax
mov dword [esp + 0x1270], ecx
mov dword [esp + 0x1274], ecx
mov dword [esp + 0x1278], ecx
mov word [esp + 0x258], cx
mov word [esp + 0x25a], cx
jne 0x58e0b2
mov edx, dword [esp + 0x148c]
lea ecx, [edi + edi*2]
lea eax, [edx + ecx*2]
movzx edx, word [eax + eax + 0x5eda0c]
mov ecx, dword [esp + 0x1478]
add eax, eax
movzx eax, word [eax + 0x5eda24]
lea ebp, [edx + ecx + 0xf54]
mov edx, edi
lea ecx, [eax + ecx + 0xf54]
shl edx, 6
xor eax, eax
sub edx, edi
lea edi, [edx + 0x5eda41]
jmp 0x58e040
movzx edx, byte [edi + eax - 1]
movzx edx, byte [edx + ebp]
mov byte [esp + eax + 0x13f0], dl
movzx edx, byte [eax + 0x5edac0]
movzx edx, byte [edx + ecx]
mov byte [esp + eax + 0x1430], dl
movzx edx, byte [edi + eax]
movzx edx, byte [edx + ebp]
mov byte [esp + eax + 0x13f1], dl
movzx edx, byte [eax + 0x5edac1]
movzx edx, byte [edx + ecx]
mov byte [esp + eax + 0x1431], dl
movzx edx, byte [edi + eax + 1]
movzx edx, byte [edx + ebp]
mov byte [esp + eax + 0x13f2], dl
movzx edx, byte [eax + 0x5edac2]
movzx edx, byte [edx + ecx]
mov byte [esp + eax + 0x1432], dl
add eax, 3
cmp eax, 0x3f
jl 0x58e040
jmp 0x58e1bf
cmp dword [esp + 0x1498], ecx
je 0x58e121
cmp dword [esp + 0x148c], 3
jne 0x58e121
mov ecx, dword [esp + 0x1478]
lea edi, [edi + edi*2]
movzx eax, word [edi*4 + 0x5eda12]
mov dx, word [eax + ecx + 0xf54]
lea eax, [eax + ecx + 0xf54]
mov al, byte [eax + 2]
mov word [esp + 0x13f0], dx
movzx edx, word [edi*4 + 0x5eda2a]
mov byte [esp + 0x13f2], al
lea eax, [edx + ecx + 0xf54]
mov cx, word [eax]
mov dl, byte [eax + 2]
mov word [esp + 0x1430], cx
mov byte [esp + 0x1432], dl
jmp 0x58e1bf
mov ecx, dword [esp + 0x148c]
lea eax, [edi + edi*2]
mov edi, dword [esp + 0x1478]
lea ecx, [ecx + eax*2]
movzx edx, word [ecx + ecx + 0x5eda0c]
lea eax, [edx + edi + 0xf54]
mov edx, dword [eax]
add ecx, ecx
movzx ecx, word [ecx + 0x5eda24]
mov dword [esp + 0x13f0], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x13f4], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x13f8], edx
mov dx, word [eax + 0xc]
mov al, byte [eax + 0xe]
mov word [esp + 0x13fc], dx
mov edx, dword [ecx + edi + 0xf54]
mov byte [esp + 0x13fe], al
lea eax, [ecx + edi + 0xf54]
mov ecx, dword [eax + 4]
mov dword [esp + 0x1430], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x1434], ecx
mov cx, word [eax + 0xc]
mov dword [esp + 0x1438], edx
mov dl, byte [eax + 0xe]
mov word [esp + 0x143c], cx
mov byte [esp + 0x143e], dl
mov eax, dword [esp + 0x148c]
movzx ecx, word [eax*2 + 0x5ed9ac]
mov edx, dword [esp + 0x1478]
mov edi, dword [esp + 0x20]
cmp edi, dword [esp + 0x1494]
lea eax, [ecx + edx + 0xf54]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov ax, word [eax + 8]
mov dword [esp + 0x127c], ecx
mov dword [esp + 0x1280], edx
mov word [esp + 0x1284], ax
mov dword [esp + 0x28], edi
jl 0x58e8d8
cmp dword [esp + 0x1498], 0
mov ecx, dword [esp + edi*4 + 0x158]
mov dword [esp + 0x54], ecx
je 0x58e233
mov edx, dword [esp + 0x1480]
movzx eax, word [edx]
shr eax, 1
jmp 0x58e246
mov eax, dword [esp + 0x14]
movzx edx, byte [eax + edi]
mov eax, dword [esp + 0x1480]
movzx eax, word [eax + edx*2]
imul eax, ecx
add eax, 0x8000
sar eax, 0x10
mov ebp, eax
jne 0x58e480
movzx ecx, byte [esp + edi + 0x13f0]
movzx eax, word [ecx*4 + 0x5f0480]
cdq
mov ecx, eax
mov eax, dword [esp + 0x1490]
mov ebp, edx
cdq
push edx
push eax
push ebp
push ecx
call fcn.004fbce0
mov ecx, dword [esi + 0x18]
shrd eax, edx, 4
shr edx, 4
test ecx, ecx
mov edx, dword [esi + 0x1c]
jne 0x58e298
cmp edx, 0x40000
je 0x58e2c7
mov dx, word [esi + 0x20]
mov word [esp + ebx*4 + 0x25a], dx
mov word [esp + ebx*4 + 0x258], 0
mov dword [esi + 0x20], ebx
add ebx, 1
mov edx, eax
xor ebp, ebp
add edx, ecx
adc ebp, dword [esi + 0x1c]
mov dword [esp + 0x10], ebx
mov dword [esi + 0x18], edx
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x30]
test ecx, ecx
mov edx, dword [esi + 0x34]
jne 0x58e2d9
cmp edx, 0x40000
je 0x58e308
mov dx, word [esi + 0x38]
mov word [esp + ebx*4 + 0x258], 0
mov word [esp + ebx*4 + 0x25a], dx
mov dword [esi + 0x38], ebx
add ebx, 1
mov edx, eax
xor ebp, ebp
add edx, ecx
adc ebp, dword [esi + 0x34]
mov dword [esp + 0x10], ebx
mov dword [esi + 0x30], edx
mov dword [esi + 0x34], ebp
mov ecx, dword [esi + 0x48]
test ecx, ecx
mov edx, dword [esi + 0x4c]
jne 0x58e31a
cmp edx, 0x40000
je 0x58e349
mov dx, word [esi + 0x50]
mov word [esp + ebx*4 + 0x258], 0
mov word [esp + ebx*4 + 0x25a], dx
mov dword [esi + 0x50], ebx
add ebx, 1
mov edx, eax
xor ebp, ebp
add edx, ecx
adc ebp, dword [esi + 0x4c]
mov dword [esp + 0x10], ebx
mov dword [esi + 0x48], edx
mov dword [esi + 0x4c], ebp
mov ecx, dword [esi + 0x60]
test ecx, ecx
mov edx, dword [esi + 0x64]
jne 0x58e35b
cmp edx, 0x40000
je 0x58e38a
mov dx, word [esi + 0x68]
mov word [esp + ebx*4 + 0x258], 0
mov word [esp + ebx*4 + 0x25a], dx
mov dword [esi + 0x68], ebx
add ebx, 1
mov edx, eax
xor ebp, ebp
add edx, ecx
adc ebp, dword [esi + 0x64]
mov dword [esp + 0x10], ebx
mov dword [esi + 0x60], edx
mov dword [esi + 0x64], ebp
mov ecx, dword [esi + 0x78]
test ecx, ecx
mov edx, dword [esi + 0x7c]
jne 0x58e39c
cmp edx, 0x40000
je 0x58e3d1
mov dx, word [esi + 0x80]
mov word [esp + ebx*4 + 0x258], 0
mov word [esp + ebx*4 + 0x25a], dx
mov dword [esi + 0x80], ebx
add ebx, 1
mov edx, eax
xor ebp, ebp
add edx, ecx
adc ebp, dword [esi + 0x7c]
mov dword [esp + 0x10], ebx
mov dword [esi + 0x78], edx
mov dword [esi + 0x7c], ebp
mov ecx, dword [esi + 0x90]
test ecx, ecx
mov edx, dword [esi + 0x94]
jne 0x58e3e9
cmp edx, 0x40000
je 0x58e427
mov dx, word [esi + 0x98]
mov word [esp + ebx*4 + 0x258], 0
mov word [esp + ebx*4 + 0x25a], dx
mov dword [esi + 0x98], ebx
add ebx, 1
mov edx, eax
xor ebp, ebp
add edx, ecx
adc ebp, dword [esi + 0x94]
mov dword [esp + 0x10], ebx
mov dword [esi + 0x90], edx
mov dword [esi + 0x94], ebp
mov ecx, dword [esi + 0xa8]
test ecx, ecx
mov edx, dword [esi + 0xac]
jne 0x58e443
cmp edx, 0x40000
je 0x58e8c4
mov bp, word [esi + 0xb0]
mov word [esp + ebx*4 + 0x258], 0
mov word [esp + ebx*4 + 0x25a], bp
mov dword [esi + 0xb0], ebx
add ebx, 1
xor ebp, ebp
add eax, ecx
adc ebp, edx
mov dword [esp + 0x10], ebx
mov dword [esi + 0xa8], eax
mov dword [esi + 0xac], ebp
jmp 0x58e8c4
mov eax, esi
mov esi, dword [esp + 0x34]
mov dword [esp + 0x48], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x20], esi
mov eax, esi
mov ecx, 8
mov edx, 0x40000
mov edi, edi
mov dword [eax], 0
mov dword [eax + 4], edx
add eax, 0x18
sub ecx, 1
jne 0x58e4a0
mov eax, dword [esp + 0x149c]
add eax, 0xffffffff
cmp edi, eax
jge 0x58e507
movzx eax, byte [esp + edi + 0x13f0]
add eax, eax
movzx ecx, word [eax + eax + 0x5f0480]
movzx edx, word [eax + eax + 0x5f0482]
add eax, eax
movzx eax, byte [esp + edi + 0x1430]
add eax, eax
add eax, eax
mov dword [esp + 0x40], ecx
movzx ecx, word [eax + 0x5f0480]
mov dword [esp + 0x44], edx
movzx edx, word [eax + 0x5f0482]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x58e519
xor eax, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], eax
lea eax, [ebp - 1]
cmp ebp, eax
mov ecx, ebp
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x4c], eax
jl 0x58e8c4
mov eax, dword [esp + 0x1478]
mov ebx, dword [eax + 0x1f1c]
mov dword [esp + 0x50], ebx
jmp 0x58e545
mov ebx, dword [esp + 0x50]
mov edx, dword [esp + 0x1498]
test edx, edx
mov eax, dword [esp + 0x1484]
mov ebp, dword [esp + 0x14a0]
je 0x58e564
mov eax, dword [eax]
add eax, eax
jmp 0x58e56f
mov esi, dword [esp + 0x14]
movzx esi, byte [esi + edi]
mov eax, dword [eax + esi*4]
mov esi, dword [esp + 0x54]
imul eax, ecx
add eax, 0x80
sar eax, 8
mov ecx, esi
sub ecx, eax
test ebx, ebx
je 0x58e65a
test edi, edi
je 0x58e65a
test edx, edx
jne 0x58e65e
cmp dword [esp + 0x148c], 4
je 0x58e665
cmp dword [esp + 0x149c], 0x40
mov edx, dword [esp + 0x1478]
jne 0x58e5c8
shl ebp, 6
add ebp, edi
movsx edx, word [edx + ebp*2 + 0x2bb0]
jmp 0x58e5d5
shl ebp, 4
add ebp, edi
movsx edx, word [edx + ebp*2 + 0x2db0]
sub eax, esi
imul eax, dword [esp + edi*4 + 0x58]
add eax, edx
cdq
mov esi, eax
xor esi, edx
sub esi, edx
imul esi, ebx
cmp dword [esp + 0x149c], 0x40
jne 0x58e608
mov eax, dword [esp + 0x14]
movzx edx, byte [eax + edi]
movzx eax, word [edx*2 + 0x5ed190]
mov dword [esp + 0x18], eax
jmp 0x58e61c
mov edx, dword [esp + 0x14]
movzx eax, byte [edx + edi]
movzx edx, word [eax*2 + 0x5ed210]
mov dword [esp + 0x18], edx
mov eax, ecx
cdq
mov ebx, eax
mov eax, dword [esp + 0x1488]
mov eax, dword [eax + edi*4]
mov ebp, edx
push ebp
cdq
push ebx
push edx
push eax
call fcn.004fbce0
push ebp
push ebx
push edx
push eax
call fcn.004fbce0
mov ecx, eax
mov eax, dword [esp + 0x18]
imul eax, esi
mov ebx, edx
cdq
sub ecx, eax
sbb ebx, edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], ebx
jmp 0x58e693
test edx, edx
je 0x58e665
mov edi, 0x100
jmp 0x58e66f
mov edx, dword [esp + 0x1488]
mov edi, dword [edx + edi*4]
mov eax, ecx
cdq
mov esi, eax
mov ebx, edx
push ebx
mov eax, edi
cdq
push esi
push edx
push eax
call fcn.004fbce0
push ebx
push esi
push edx
push eax
call fcn.004fbce0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov ebp, dword [esp + 0x48]
xor ebx, ebx
lea esp, [esp]
cmp dword [ebp], 0
mov dword [esp + 0x18], ebx
jne 0x58e6b7
cmp dword [ebp + 4], 0x40000
je 0x58e894
mov eax, dword [ebp + 8]
mov edi, dword [ebp]
mov esi, dword [ebp + 4]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x1260], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x126c], eax
mov eax, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x1258], edi
mov dword [esp + 0x125c], esi
mov dword [esp + 0x1264], ecx
mov dword [esp + 0x1268], edx
jne 0x58e703
test ebx, ebx
je 0x58e822
xor ecx, ecx
test eax, eax
setne cl
test eax, eax
mov ecx, dword [esp + ecx*4 + 0x40]
je 0x58e805
add eax, 0xffffffff
cmp eax, 0xe
jl 0x58e723
mov eax, 0xe
mov esi, dword [ebx*4 + 0x5edb00]
movzx edi, byte [esp + esi + 0x1264]
xor edx, edx
test eax, eax
setg dl
lea esi, [esp + esi + 0x1264]
lea edi, [edx + edi*2]
mov dl, byte [edi + 0x5f0340]
mov byte [esi], dl
movzx esi, word [edi*2 + 0x5f0480]
xor edx, edx
test ebx, ebx
sete dl
mov edx, dword [esp + edx*4 + 0x38]
add edx, esi
add ecx, edx
test eax, eax
jle 0x58e7e6
mov esi, dword [ebx*4 + 0x5edb20]
movzx edx, byte [esp + esi + 0x1264]
lea esi, [esp + esi + 0x1264]
shl eax, 7
lea edi, [eax + edx]
movzx eax, word [edi*2 + 0x62fe70]
mov dl, byte [edi + 0x62f620]
add ecx, eax
mov eax, dword [esp + 0x1c]
cmp eax, 0xf
mov byte [esi], dl
jl 0x58e7d9
add eax, 0xfffffff1
cmp eax, 0xff
jae 0x58e7c4
movzx eax, byte [eax + 0x5ecf41]
shl eax, 8
add ecx, eax
movzx eax, byte [ebx + 0x5edb48]
mov dword [esp + 0x18], eax
jmp 0x58e7f7
add eax, 1
shr eax, 8
movzx eax, byte [eax + 0x5ecf40]
add eax, 0x10
shl eax, 8
add ecx, eax
movzx eax, byte [ebx + 0x5edb48]
mov dword [esp + 0x18], eax
jmp 0x58e7f7
movzx edx, byte [ebx + 0x5edb40]
add ecx, 0x100
mov dword [esp + 0x18], edx
mov edi, dword [esp + 0x1258]
mov esi, dword [esp + 0x125c]
mov eax, dword [esp + 0x1490]
cdq
push edx
push eax
push 0
push ecx
call fcn.004fbce0
shrd eax, edx, 4
shr edx, 4
add edi, eax
adc esi, edx
add edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
adc esi, dword [esp + 0x30]
lea eax, [eax + eax*2]
cmp esi, dword [ecx + eax*8 + 4]
lea eax, [ecx + eax*8]
jg 0x58e894
jl 0x58e844
cmp edi, dword [eax]
jae 0x58e894
mov edx, dword [esp + 0x10]
movzx ecx, word [esp + 0x1c]
mov word [esp + edx*4 + 0x258], cx
movzx ecx, word [esp + 0x1260]
mov word [esp + edx*4 + 0x25a], cx
mov ecx, edx
add edx, 1
mov dword [eax], edi
mov dword [eax + 4], esi
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x1264]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x1268]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x126c]
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edx
add ebx, 1
add ebp, 0x18
cmp ebx, 8
jl 0x58e6a0
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
sub ecx, 1
cmp ecx, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
jge 0x58e541
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
sub edi, 1
cmp edi, dword [esp + 0x1494]
mov dword [esp + 0x28], edi
jge 0x58e210
mov edx, dword [esi + 0x1c]
cmp edx, dword [esi + 4]
lea ecx, [esi + 0x18]
mov eax, esi
jg 0x58e8ef
jl 0x58e8ed
mov edx, dword [ecx]
cmp edx, dword [esi]
jae 0x58e8ef
mov eax, ecx
mov edx, dword [ecx + 0x1c]
add ecx, 0x18
cmp edx, dword [eax + 4]
jg 0x58e904
jl 0x58e902
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e904
mov eax, ecx
mov edx, dword [esi + 0x4c]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x48]
jg 0x58e919
jl 0x58e917
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e919
mov eax, ecx
mov edx, dword [esi + 0x64]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x60]
jg 0x58e92e
jl 0x58e92c
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e92e
mov eax, ecx
mov edx, dword [esi + 0x7c]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x78]
jg 0x58e943
jl 0x58e941
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e943
mov eax, ecx
mov edx, dword [esi + 0x94]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x90]
jg 0x58e95e
jl 0x58e95c
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e95e
mov eax, ecx
mov ecx, dword [esi + 0xac]
add esi, 0xa8
cmp ecx, dword [eax + 4]
jg 0x58e979
jl 0x58e977
mov edx, dword [esi]
cmp edx, dword [eax]
jae 0x58e979
mov eax, esi
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x1494]
xor esi, esi
cmp eax, dword [esp + 0x149c]
jge 0x58e9c8
mov edi, dword [esp + 0x24]
movzx edx, word [esp + ecx*4 + 0x258]
mov bx, word [esp + eax*4 + 0x58]
mov ebp, dword [esp + 0x14]
imul bx, dx
movzx ebp, byte [eax + ebp]
movzx ecx, word [esp + ecx*4 + 0x25a]
movzx edx, dx
add eax, 1
or esi, edx
cmp eax, dword [esp + 0x149c]
mov word [edi + ebp*2], bx
jl 0x58e992
xor eax, eax
test esi, esi
setne al
mov ecx, dword [esp + 0x1470]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004f2a78
add esp, 0x1464
ret