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

Disassembly:
mov eax, 0x1464
call fcn.004fa640
mov eax, dword [0x629560]
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 0x58dcb8
jmp 0x58dc6b
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x1480]
cmp dword [esp + 0x1498], 0
je 0x58dc7c
movzx eax, word [eax]
shr eax, 1
jmp 0x58dc88
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 0x58dcaf
sub ecx, ebx
cmp ecx, dword [esp + 0x1494]
jge 0x58dc60
jmp 0x58dcb8
cmp ecx, dword [esp + 0x1494]
jge 0x58dcd5
mov eax, dword [esp + 0x149c]
lea ecx, [eax + eax]
push ecx
push 0
push ebp
call fcn.004f9810
add esp, 0xc
xor eax, eax
jmp 0x58e78f
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 0x58dce0
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 0x58de72
mov edx, dword [esp + 0x148c]
lea ecx, [edi + edi*2]
lea eax, [edx + ecx*2]
movzx edx, word [eax + eax + 0x5ed9e4]
mov ecx, dword [esp + 0x1478]
add eax, eax
movzx eax, word [eax + 0x5ed9fc]
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 + 0x5eda19]
jmp 0x58de00
movzx edx, byte [edi + eax - 1]
movzx edx, byte [edx + ebp]
mov byte [esp + eax + 0x13f0], dl
movzx edx, byte [eax + 0x5eda98]
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 + 0x5eda99]
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 + 0x5eda9a]
movzx edx, byte [edx + ecx]
mov byte [esp + eax + 0x1432], dl
add eax, 3
cmp eax, 0x3f
jl 0x58de00
jmp 0x58df7f
cmp dword [esp + 0x1498], ecx
je 0x58dee1
cmp dword [esp + 0x148c], 3
jne 0x58dee1
mov ecx, dword [esp + 0x1478]
lea edi, [edi + edi*2]
movzx eax, word [edi*4 + 0x5ed9ea]
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 + 0x5eda02]
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 0x58df7f
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 + 0x5ed9e4]
lea eax, [edx + edi + 0xf54]
mov edx, dword [eax]
add ecx, ecx
movzx ecx, word [ecx + 0x5ed9fc]
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 + 0x5ed984]
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 0x58e698
cmp dword [esp + 0x1498], 0
mov ecx, dword [esp + edi*4 + 0x158]
mov dword [esp + 0x54], ecx
je 0x58dff3
mov edx, dword [esp + 0x1480]
movzx eax, word [edx]
shr eax, 1
jmp 0x58e006
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 0x58e240
movzx ecx, byte [esp + edi + 0x13f0]
movzx eax, word [ecx*4 + 0x5f0458]
cdq
mov ecx, eax
mov eax, dword [esp + 0x1490]
mov ebp, edx
cdq
push edx
push eax
push ebp
push ecx
call fcn.004fba20
mov ecx, dword [esi + 0x18]
shrd eax, edx, 4
shr edx, 4
test ecx, ecx
mov edx, dword [esi + 0x1c]
jne 0x58e058
cmp edx, 0x40000
je 0x58e087
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 0x58e099
cmp edx, 0x40000
je 0x58e0c8
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 0x58e0da
cmp edx, 0x40000
je 0x58e109
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 0x58e11b
cmp edx, 0x40000
je 0x58e14a
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 0x58e15c
cmp edx, 0x40000
je 0x58e191
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 0x58e1a9
cmp edx, 0x40000
je 0x58e1e7
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 0x58e203
cmp edx, 0x40000
je 0x58e684
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 0x58e684
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 0x58e260
mov eax, dword [esp + 0x149c]
add eax, 0xffffffff
cmp edi, eax
jge 0x58e2c7
movzx eax, byte [esp + edi + 0x13f0]
add eax, eax
movzx ecx, word [eax + eax + 0x5f0458]
movzx edx, word [eax + eax + 0x5f045a]
add eax, eax
movzx eax, byte [esp + edi + 0x1430]
add eax, eax
add eax, eax
mov dword [esp + 0x40], ecx
movzx ecx, word [eax + 0x5f0458]
mov dword [esp + 0x44], edx
movzx edx, word [eax + 0x5f045a]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x58e2d9
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 0x58e684
mov eax, dword [esp + 0x1478]
mov ebx, dword [eax + 0x1f1c]
mov dword [esp + 0x50], ebx
jmp 0x58e305
mov ebx, dword [esp + 0x50]
mov edx, dword [esp + 0x1498]
test edx, edx
mov eax, dword [esp + 0x1484]
mov ebp, dword [esp + 0x14a0]
je 0x58e324
mov eax, dword [eax]
add eax, eax
jmp 0x58e32f
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 0x58e41a
test edi, edi
je 0x58e41a
test edx, edx
jne 0x58e41e
cmp dword [esp + 0x148c], 4
je 0x58e425
cmp dword [esp + 0x149c], 0x40
mov edx, dword [esp + 0x1478]
jne 0x58e388
shl ebp, 6
add ebp, edi
movsx edx, word [edx + ebp*2 + 0x2bb0]
jmp 0x58e395
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 0x58e3c8
mov eax, dword [esp + 0x14]
movzx edx, byte [eax + edi]
movzx eax, word [edx*2 + 0x5ed168]
mov dword [esp + 0x18], eax
jmp 0x58e3dc
mov edx, dword [esp + 0x14]
movzx eax, byte [edx + edi]
movzx edx, word [eax*2 + 0x5ed1e8]
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.004fba20
push ebp
push ebx
push edx
push eax
call fcn.004fba20
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 0x58e453
test edx, edx
je 0x58e425
mov edi, 0x100
jmp 0x58e42f
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.004fba20
push ebx
push esi
push edx
push eax
call fcn.004fba20
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 0x58e477
cmp dword [ebp + 4], 0x40000
je 0x58e654
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 0x58e4c3
test ebx, ebx
je 0x58e5e2
xor ecx, ecx
test eax, eax
setne cl
test eax, eax
mov ecx, dword [esp + ecx*4 + 0x40]
je 0x58e5c5
add eax, 0xffffffff
cmp eax, 0xe
jl 0x58e4e3
mov eax, 0xe
mov esi, dword [ebx*4 + 0x5edad8]
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 + 0x5f0318]
mov byte [esi], dl
movzx esi, word [edi*2 + 0x5f0458]
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 0x58e5a6
mov esi, dword [ebx*4 + 0x5edaf8]
movzx edx, byte [esp + esi + 0x1264]
lea esi, [esp + esi + 0x1264]
shl eax, 7
lea edi, [eax + edx]
movzx eax, word [edi*2 + 0x630f70]
mov dl, byte [edi + 0x630720]
add ecx, eax
mov eax, dword [esp + 0x1c]
cmp eax, 0xf
mov byte [esi], dl
jl 0x58e599
add eax, 0xfffffff1
cmp eax, 0xff
jae 0x58e584
movzx eax, byte [eax + 0x5ecf19]
shl eax, 8
add ecx, eax
movzx eax, byte [ebx + 0x5edb20]
mov dword [esp + 0x18], eax
jmp 0x58e5b7
add eax, 1
shr eax, 8
movzx eax, byte [eax + 0x5ecf18]
add eax, 0x10
shl eax, 8
add ecx, eax
movzx eax, byte [ebx + 0x5edb20]
mov dword [esp + 0x18], eax
jmp 0x58e5b7
movzx edx, byte [ebx + 0x5edb18]
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.004fba20
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 0x58e654
jl 0x58e604
cmp edi, dword [eax]
jae 0x58e654
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 0x58e460
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
sub ecx, 1
cmp ecx, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
jge 0x58e301
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
sub edi, 1
cmp edi, dword [esp + 0x1494]
mov dword [esp + 0x28], edi
jge 0x58dfd0
mov edx, dword [esi + 0x1c]
cmp edx, dword [esi + 4]
lea ecx, [esi + 0x18]
mov eax, esi
jg 0x58e6af
jl 0x58e6ad
mov edx, dword [ecx]
cmp edx, dword [esi]
jae 0x58e6af
mov eax, ecx
mov edx, dword [ecx + 0x1c]
add ecx, 0x18
cmp edx, dword [eax + 4]
jg 0x58e6c4
jl 0x58e6c2
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e6c4
mov eax, ecx
mov edx, dword [esi + 0x4c]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x48]
jg 0x58e6d9
jl 0x58e6d7
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e6d9
mov eax, ecx
mov edx, dword [esi + 0x64]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x60]
jg 0x58e6ee
jl 0x58e6ec
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e6ee
mov eax, ecx
mov edx, dword [esi + 0x7c]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x78]
jg 0x58e703
jl 0x58e701
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e703
mov eax, ecx
mov edx, dword [esi + 0x94]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x90]
jg 0x58e71e
jl 0x58e71c
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x58e71e
mov eax, ecx
mov ecx, dword [esi + 0xac]
add esi, 0xa8
cmp ecx, dword [eax + 4]
jg 0x58e739
jl 0x58e737
mov edx, dword [esi]
cmp edx, dword [eax]
jae 0x58e739
mov eax, esi
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x1494]
xor esi, esi
cmp eax, dword [esp + 0x149c]
jge 0x58e788
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 0x58e752
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.004f2719
add esp, 0x1464
ret