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

Disassembly:
mov eax, 0x1464
call fcn.004eb090
mov eax, dword [0x617560]
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 0x57ea98
jmp 0x57ea4b
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x1480]
cmp dword [esp + 0x1498], 0
je 0x57ea5c
movzx eax, word [eax]
shr eax, 1
jmp 0x57ea68
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 0x57ea8f
sub ecx, ebx
cmp ecx, dword [esp + 0x1494]
jge 0x57ea40
jmp 0x57ea98
cmp ecx, dword [esp + 0x1494]
jge 0x57eab5
mov eax, dword [esp + 0x149c]
lea ecx, [eax + eax]
push ecx
push 0
push ebp
call fcn.004ea260
add esp, 0xc
xor eax, eax
jmp 0x57f56f
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 0x57eac0
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 0x57ec52
mov edx, dword [esp + 0x148c]
lea ecx, [edi + edi*2]
lea eax, [edx + ecx*2]
movzx edx, word [eax + eax + 0x5dd9ac]
mov ecx, dword [esp + 0x1478]
add eax, eax
movzx eax, word [eax + 0x5dd9c4]
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 + 0x5dd9e1]
jmp 0x57ebe0
movzx edx, byte [edi + eax - 1]
movzx edx, byte [edx + ebp]
mov byte [esp + eax + 0x13f0], dl
movzx edx, byte [eax + 0x5dda60]
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 + 0x5dda61]
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 + 0x5dda62]
movzx edx, byte [edx + ecx]
mov byte [esp + eax + 0x1432], dl
add eax, 3
cmp eax, 0x3f
jl 0x57ebe0
jmp 0x57ed5f
cmp dword [esp + 0x1498], ecx
je 0x57ecc1
cmp dword [esp + 0x148c], 3
jne 0x57ecc1
mov ecx, dword [esp + 0x1478]
lea edi, [edi + edi*2]
movzx eax, word [edi*4 + 0x5dd9b2]
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 + 0x5dd9ca]
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 0x57ed5f
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 + 0x5dd9ac]
lea eax, [edx + edi + 0xf54]
mov edx, dword [eax]
add ecx, ecx
movzx ecx, word [ecx + 0x5dd9c4]
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 + 0x5dd94c]
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 0x57f478
cmp dword [esp + 0x1498], 0
mov ecx, dword [esp + edi*4 + 0x158]
mov dword [esp + 0x54], ecx
je 0x57edd3
mov edx, dword [esp + 0x1480]
movzx eax, word [edx]
shr eax, 1
jmp 0x57ede6
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 0x57f020
movzx ecx, byte [esp + edi + 0x13f0]
movzx eax, word [ecx*4 + 0x5e0420]
cdq
mov ecx, eax
mov eax, dword [esp + 0x1490]
mov ebp, edx
cdq
push edx
push eax
push ebp
push ecx
call fcn.004ec6f0
mov ecx, dword [esi + 0x18]
shrd eax, edx, 4
shr edx, 4
test ecx, ecx
mov edx, dword [esi + 0x1c]
jne 0x57ee38
cmp edx, 0x40000
je 0x57ee67
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 0x57ee79
cmp edx, 0x40000
je 0x57eea8
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 0x57eeba
cmp edx, 0x40000
je 0x57eee9
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 0x57eefb
cmp edx, 0x40000
je 0x57ef2a
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 0x57ef3c
cmp edx, 0x40000
je 0x57ef71
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 0x57ef89
cmp edx, 0x40000
je 0x57efc7
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 0x57efe3
cmp edx, 0x40000
je 0x57f464
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 0x57f464
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 0x57f040
mov eax, dword [esp + 0x149c]
add eax, 0xffffffff
cmp edi, eax
jge 0x57f0a7
movzx eax, byte [esp + edi + 0x13f0]
add eax, eax
movzx ecx, word [eax + eax + 0x5e0420]
movzx edx, word [eax + eax + 0x5e0422]
add eax, eax
movzx eax, byte [esp + edi + 0x1430]
add eax, eax
add eax, eax
mov dword [esp + 0x40], ecx
movzx ecx, word [eax + 0x5e0420]
mov dword [esp + 0x44], edx
movzx edx, word [eax + 0x5e0422]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x57f0b9
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 0x57f464
mov eax, dword [esp + 0x1478]
mov ebx, dword [eax + 0x1f1c]
mov dword [esp + 0x50], ebx
jmp 0x57f0e5
mov ebx, dword [esp + 0x50]
mov edx, dword [esp + 0x1498]
test edx, edx
mov eax, dword [esp + 0x1484]
mov ebp, dword [esp + 0x14a0]
je 0x57f104
mov eax, dword [eax]
add eax, eax
jmp 0x57f10f
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 0x57f1fa
test edi, edi
je 0x57f1fa
test edx, edx
jne 0x57f1fe
cmp dword [esp + 0x148c], 4
je 0x57f205
cmp dword [esp + 0x149c], 0x40
mov edx, dword [esp + 0x1478]
jne 0x57f168
shl ebp, 6
add ebp, edi
movsx edx, word [edx + ebp*2 + 0x2bb0]
jmp 0x57f175
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 0x57f1a8
mov eax, dword [esp + 0x14]
movzx edx, byte [eax + edi]
movzx eax, word [edx*2 + 0x5dd130]
mov dword [esp + 0x18], eax
jmp 0x57f1bc
mov edx, dword [esp + 0x14]
movzx eax, byte [edx + edi]
movzx edx, word [eax*2 + 0x5dd1b0]
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.004ec6f0
push ebp
push ebx
push edx
push eax
call fcn.004ec6f0
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 0x57f233
test edx, edx
je 0x57f205
mov edi, 0x100
jmp 0x57f20f
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.004ec6f0
push ebx
push esi
push edx
push eax
call fcn.004ec6f0
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 0x57f257
cmp dword [ebp + 4], 0x40000
je 0x57f434
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 0x57f2a3
test ebx, ebx
je 0x57f3c2
xor ecx, ecx
test eax, eax
setne cl
test eax, eax
mov ecx, dword [esp + ecx*4 + 0x40]
je 0x57f3a5
add eax, 0xffffffff
cmp eax, 0xe
jl 0x57f2c3
mov eax, 0xe
mov esi, dword [ebx*4 + 0x5ddaa0]
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 + 0x5e02e0]
mov byte [esi], dl
movzx esi, word [edi*2 + 0x5e0420]
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 0x57f386
mov esi, dword [ebx*4 + 0x5ddac0]
movzx edx, byte [esp + esi + 0x1264]
lea esi, [esp + esi + 0x1264]
shl eax, 7
lea edi, [eax + edx]
movzx eax, word [edi*2 + 0x61ef70]
mov dl, byte [edi + 0x61e720]
add ecx, eax
mov eax, dword [esp + 0x1c]
cmp eax, 0xf
mov byte [esi], dl
jl 0x57f379
add eax, 0xfffffff1
cmp eax, 0xff
jae 0x57f364
movzx eax, byte [eax + 0x5dcee1]
shl eax, 8
add ecx, eax
movzx eax, byte [ebx + 0x5ddae8]
mov dword [esp + 0x18], eax
jmp 0x57f397
add eax, 1
shr eax, 8
movzx eax, byte [eax + 0x5dcee0]
add eax, 0x10
shl eax, 8
add ecx, eax
movzx eax, byte [ebx + 0x5ddae8]
mov dword [esp + 0x18], eax
jmp 0x57f397
movzx edx, byte [ebx + 0x5ddae0]
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.004ec6f0
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 0x57f434
jl 0x57f3e4
cmp edi, dword [eax]
jae 0x57f434
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 0x57f240
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
sub ecx, 1
cmp ecx, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
jge 0x57f0e1
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
sub edi, 1
cmp edi, dword [esp + 0x1494]
mov dword [esp + 0x28], edi
jge 0x57edb0
mov edx, dword [esi + 0x1c]
cmp edx, dword [esi + 4]
lea ecx, [esi + 0x18]
mov eax, esi
jg 0x57f48f
jl 0x57f48d
mov edx, dword [ecx]
cmp edx, dword [esi]
jae 0x57f48f
mov eax, ecx
mov edx, dword [ecx + 0x1c]
add ecx, 0x18
cmp edx, dword [eax + 4]
jg 0x57f4a4
jl 0x57f4a2
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57f4a4
mov eax, ecx
mov edx, dword [esi + 0x4c]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x48]
jg 0x57f4b9
jl 0x57f4b7
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57f4b9
mov eax, ecx
mov edx, dword [esi + 0x64]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x60]
jg 0x57f4ce
jl 0x57f4cc
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57f4ce
mov eax, ecx
mov edx, dword [esi + 0x7c]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x78]
jg 0x57f4e3
jl 0x57f4e1
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57f4e3
mov eax, ecx
mov edx, dword [esi + 0x94]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x90]
jg 0x57f4fe
jl 0x57f4fc
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57f4fe
mov eax, ecx
mov ecx, dword [esi + 0xac]
add esi, 0xa8
cmp ecx, dword [eax + 4]
jg 0x57f519
jl 0x57f517
mov edx, dword [esi]
cmp edx, dword [eax]
jae 0x57f519
mov eax, esi
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x1494]
xor esi, esi
cmp eax, dword [esp + 0x149c]
jge 0x57f568
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 0x57f532
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.004e3543
add esp, 0x1464
ret