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

Disassembly:
mov eax, 0x1464
call fcn.004eb910
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 0x57f318
jmp 0x57f2cb
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x1480]
cmp dword [esp + 0x1498], 0
je 0x57f2dc
movzx eax, word [eax]
shr eax, 1
jmp 0x57f2e8
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 0x57f30f
sub ecx, ebx
cmp ecx, dword [esp + 0x1494]
jge 0x57f2c0
jmp 0x57f318
cmp ecx, dword [esp + 0x1494]
jge 0x57f335
mov eax, dword [esp + 0x149c]
lea ecx, [eax + eax]
push ecx
push 0
push ebp
call fcn.004eaae0
add esp, 0xc
xor eax, eax
jmp 0x57fdef
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 0x57f340
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 0x57f4d2
mov edx, dword [esp + 0x148c]
lea ecx, [edi + edi*2]
lea eax, [edx + ecx*2]
movzx edx, word [eax + eax + 0x5dd9c4]
mov ecx, dword [esp + 0x1478]
add eax, eax
movzx eax, word [eax + 0x5dd9dc]
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 + 0x5dd9f9]
jmp 0x57f460
movzx edx, byte [edi + eax - 1]
movzx edx, byte [edx + ebp]
mov byte [esp + eax + 0x13f0], dl
movzx edx, byte [eax + 0x5dda78]
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 + 0x5dda79]
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 + 0x5dda7a]
movzx edx, byte [edx + ecx]
mov byte [esp + eax + 0x1432], dl
add eax, 3
cmp eax, 0x3f
jl 0x57f460
jmp 0x57f5df
cmp dword [esp + 0x1498], ecx
je 0x57f541
cmp dword [esp + 0x148c], 3
jne 0x57f541
mov ecx, dword [esp + 0x1478]
lea edi, [edi + edi*2]
movzx eax, word [edi*4 + 0x5dd9ca]
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 + 0x5dd9e2]
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 0x57f5df
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 + 0x5dd9c4]
lea eax, [edx + edi + 0xf54]
mov edx, dword [eax]
add ecx, ecx
movzx ecx, word [ecx + 0x5dd9dc]
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 + 0x5dd964]
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 0x57fcf8
cmp dword [esp + 0x1498], 0
mov ecx, dword [esp + edi*4 + 0x158]
mov dword [esp + 0x54], ecx
je 0x57f653
mov edx, dword [esp + 0x1480]
movzx eax, word [edx]
shr eax, 1
jmp 0x57f666
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 0x57f8a0
movzx ecx, byte [esp + edi + 0x13f0]
movzx eax, word [ecx*4 + 0x5e0438]
cdq
mov ecx, eax
mov eax, dword [esp + 0x1490]
mov ebp, edx
cdq
push edx
push eax
push ebp
push ecx
call fcn.004ecf70
mov ecx, dword [esi + 0x18]
shrd eax, edx, 4
shr edx, 4
test ecx, ecx
mov edx, dword [esi + 0x1c]
jne 0x57f6b8
cmp edx, 0x40000
je 0x57f6e7
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 0x57f6f9
cmp edx, 0x40000
je 0x57f728
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 0x57f73a
cmp edx, 0x40000
je 0x57f769
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 0x57f77b
cmp edx, 0x40000
je 0x57f7aa
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 0x57f7bc
cmp edx, 0x40000
je 0x57f7f1
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 0x57f809
cmp edx, 0x40000
je 0x57f847
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 0x57f863
cmp edx, 0x40000
je 0x57fce4
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 0x57fce4
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 0x57f8c0
mov eax, dword [esp + 0x149c]
add eax, 0xffffffff
cmp edi, eax
jge 0x57f927
movzx eax, byte [esp + edi + 0x13f0]
add eax, eax
movzx ecx, word [eax + eax + 0x5e0438]
movzx edx, word [eax + eax + 0x5e043a]
add eax, eax
movzx eax, byte [esp + edi + 0x1430]
add eax, eax
add eax, eax
mov dword [esp + 0x40], ecx
movzx ecx, word [eax + 0x5e0438]
mov dword [esp + 0x44], edx
movzx edx, word [eax + 0x5e043a]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x57f939
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 0x57fce4
mov eax, dword [esp + 0x1478]
mov ebx, dword [eax + 0x1f1c]
mov dword [esp + 0x50], ebx
jmp 0x57f965
mov ebx, dword [esp + 0x50]
mov edx, dword [esp + 0x1498]
test edx, edx
mov eax, dword [esp + 0x1484]
mov ebp, dword [esp + 0x14a0]
je 0x57f984
mov eax, dword [eax]
add eax, eax
jmp 0x57f98f
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 0x57fa7a
test edi, edi
je 0x57fa7a
test edx, edx
jne 0x57fa7e
cmp dword [esp + 0x148c], 4
je 0x57fa85
cmp dword [esp + 0x149c], 0x40
mov edx, dword [esp + 0x1478]
jne 0x57f9e8
shl ebp, 6
add ebp, edi
movsx edx, word [edx + ebp*2 + 0x2bb0]
jmp 0x57f9f5
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 0x57fa28
mov eax, dword [esp + 0x14]
movzx edx, byte [eax + edi]
movzx eax, word [edx*2 + 0x5dd148]
mov dword [esp + 0x18], eax
jmp 0x57fa3c
mov edx, dword [esp + 0x14]
movzx eax, byte [edx + edi]
movzx edx, word [eax*2 + 0x5dd1c8]
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.004ecf70
push ebp
push ebx
push edx
push eax
call fcn.004ecf70
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 0x57fab3
test edx, edx
je 0x57fa85
mov edi, 0x100
jmp 0x57fa8f
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.004ecf70
push ebx
push esi
push edx
push eax
call fcn.004ecf70
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 0x57fad7
cmp dword [ebp + 4], 0x40000
je 0x57fcb4
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 0x57fb23
test ebx, ebx
je 0x57fc42
xor ecx, ecx
test eax, eax
setne cl
test eax, eax
mov ecx, dword [esp + ecx*4 + 0x40]
je 0x57fc25
add eax, 0xffffffff
cmp eax, 0xe
jl 0x57fb43
mov eax, 0xe
mov esi, dword [ebx*4 + 0x5ddab8]
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 + 0x5e02f8]
mov byte [esi], dl
movzx esi, word [edi*2 + 0x5e0438]
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 0x57fc06
mov esi, dword [ebx*4 + 0x5ddad8]
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 0x57fbf9
add eax, 0xfffffff1
cmp eax, 0xff
jae 0x57fbe4
movzx eax, byte [eax + 0x5dcef9]
shl eax, 8
add ecx, eax
movzx eax, byte [ebx + 0x5ddb00]
mov dword [esp + 0x18], eax
jmp 0x57fc17
add eax, 1
shr eax, 8
movzx eax, byte [eax + 0x5dcef8]
add eax, 0x10
shl eax, 8
add ecx, eax
movzx eax, byte [ebx + 0x5ddb00]
mov dword [esp + 0x18], eax
jmp 0x57fc17
movzx edx, byte [ebx + 0x5ddaf8]
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.004ecf70
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 0x57fcb4
jl 0x57fc64
cmp edi, dword [eax]
jae 0x57fcb4
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 0x57fac0
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
sub ecx, 1
cmp ecx, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
jge 0x57f961
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
sub edi, 1
cmp edi, dword [esp + 0x1494]
mov dword [esp + 0x28], edi
jge 0x57f630
mov edx, dword [esi + 0x1c]
cmp edx, dword [esi + 4]
lea ecx, [esi + 0x18]
mov eax, esi
jg 0x57fd0f
jl 0x57fd0d
mov edx, dword [ecx]
cmp edx, dword [esi]
jae 0x57fd0f
mov eax, ecx
mov edx, dword [ecx + 0x1c]
add ecx, 0x18
cmp edx, dword [eax + 4]
jg 0x57fd24
jl 0x57fd22
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57fd24
mov eax, ecx
mov edx, dword [esi + 0x4c]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x48]
jg 0x57fd39
jl 0x57fd37
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57fd39
mov eax, ecx
mov edx, dword [esi + 0x64]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x60]
jg 0x57fd4e
jl 0x57fd4c
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57fd4e
mov eax, ecx
mov edx, dword [esi + 0x7c]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x78]
jg 0x57fd63
jl 0x57fd61
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57fd63
mov eax, ecx
mov edx, dword [esi + 0x94]
cmp edx, dword [eax + 4]
lea ecx, [esi + 0x90]
jg 0x57fd7e
jl 0x57fd7c
mov edx, dword [ecx]
cmp edx, dword [eax]
jae 0x57fd7e
mov eax, ecx
mov ecx, dword [esi + 0xac]
add esi, 0xa8
cmp ecx, dword [eax + 4]
jg 0x57fd99
jl 0x57fd97
mov edx, dword [esi]
cmp edx, dword [eax]
jae 0x57fd99
mov eax, esi
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x1494]
xor esi, esi
cmp eax, dword [esp + 0x149c]
jge 0x57fde8
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 0x57fdb2
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.004e3dc3
add esp, 0x1464
ret