Function at 0x6157b0
Capabilities:
Check for software breakpoints

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x69d7d0
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x20]
mov dword fs:[0], esp
sub esp, 0x24
mov dword [eax], 0xffffffff
mov dword [ecx], 0xffffffff
push ebx
mov ebx, dword [esp + 0x40]
push ebp
push esi
test ebx, ebx
push edi
je 0x615827
mov edi, 0x6dfe28
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
mov ecx, ebx
push ebp
call fcn.00403350
test al, al
je 0x615827
mov edi, dword [ebx + 4]
mov ecx, ebp
mov edx, ecx
mov esi, 0x6dfe28
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebx
call fcn.00403330
mov ebx, dword [esp + 0x50]
test ebx, ebx
je 0x61586e
mov edi, 0x6dfe28
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
mov ecx, ebx
push ebp
call fcn.00403350
test al, al
je 0x61586e
mov edi, dword [ebx + 4]
mov ecx, ebp
mov eax, ecx
mov esi, 0x6dfe28
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebx
call fcn.00403330
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x61588c
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
add esp, 0x30
ret
mov cl, byte [esp + 0x4c]
xor ebx, ebx
mov bl, byte [eax + 0x42]
mov byte [esp + 0x14], cl
push 0
lea ecx, [esp + 0x18]
mov dword [esp + 0x14], 0xffffffff
call fcn.004031c0
test ebx, ebx
mov dword [esp + 0x3c], 0
jl 0x615931
cmp ebx, 4
jg 0x615931
test ebx, ebx
je 0x6158e1
cmp ebx, 1
je 0x6158e1
cmp ebx, 3
je 0x6158e1
cmp ebx, 2
je 0x6158d5
cmp ebx, 4
jne 0x6158eb
mov edx, dword [esp + 0x58]
mov dword [edx], 1
jmp 0x6158eb
mov eax, dword [esp + 0x58]
mov dword [eax], 0
mov edi, 0x6d8e70
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], 1
mov ebp, ecx
lea ecx, [esp + 0x18]
push ebp
call fcn.00403350
test al, al
je 0x615aaa
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov edx, ecx
mov esi, 0x6d8e70
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
jmp 0x615a9b
cmp ebx, 5
jl 0x6159dc
cmp ebx, 9
jg 0x6159dc
cmp ebx, 5
jne 0x615954
mov eax, dword [esp + 0x54]
mov dword [eax], 0
jmp 0x615996
cmp ebx, 6
jne 0x615965
mov ecx, dword [esp + 0x54]
mov dword [ecx], 1
jmp 0x615996
cmp ebx, 7
jne 0x615976
mov edx, dword [esp + 0x54]
mov dword [edx], 5
jmp 0x615996
cmp ebx, 8
jne 0x615987
mov eax, dword [esp + 0x54]
mov dword [eax], 3
jmp 0x615996
cmp ebx, 9
jne 0x615996
mov ecx, dword [esp + 0x54]
mov dword [ecx], 4
mov edi, 0x6d8e64
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], 2
mov ebp, ecx
lea ecx, [esp + 0x18]
push ebp
call fcn.00403350
test al, al
je 0x615aaa
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov edx, ecx
mov esi, 0x6d8e64
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
jmp 0x615a9b
cmp ebx, 0xa
jl 0x615a15
cmp ebx, 0xf
jg 0x615a15
mov edi, 0x6d4738
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], 3
mov ebp, ecx
lea ecx, [esp + 0x18]
push ebp
call fcn.00403350
test al, al
je 0x615aaa
jmp 0x615a87
cmp ebx, 0x10
jne 0x615a59
mov edi, 0x6d4738
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], 9
mov ebp, ecx
lea ecx, [esp + 0x18]
push ebp
call fcn.00403350
test al, al
je 0x615aaa
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov edx, ecx
mov esi, 0x6d4738
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
jmp 0x615a9b
cmp ebx, 0x11
jne 0x615aaa
mov edi, 0x6d4738
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], 0xa
mov ebp, ecx
lea ecx, [esp + 0x18]
push ebp
call fcn.00403350
test al, al
je 0x615aaa
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov eax, ecx
mov esi, 0x6d4738
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push ebp
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x18]
call fcn.00403330
mov cl, byte [esp + 0x4c]
push 0x100
mov byte [esp + 0x58], 0
mov byte [esp + 0x28], cl
call fcn.00673b05
mov ebp, eax
add esp, 4
mov dword [esp + 0x28], ebp
mov esi, ebp
mov edi, 0x100
lea edx, [esp + 0x54]
push edx
push esi
call fcn.004046a0
add esp, 8
inc esi
dec edi
jne 0x615ad1
lea eax, [ebp + 0x100]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x4c]
mov byte [esp + 0x3c], 1
test eax, eax
je 0x6160eb
mov eax, dword [esp + 0x48]
xor edx, edx
mov ecx, 0x3e8
mov edi, dword [esp + 0x44]
div ecx
lea eax, [esp + 0x54]
lea ecx, [esp + 0x58]
push eax
push ecx
mov dword [esp + 0x5c], edx
xor edx, edx
mov dl, byte [edi + 4]
mov esi, dword [edx*4 + 0x8186f8]
lea ecx, [esi + 0x14]
call fcn.00453310
mov esi, dword [esi + 0x18]
mov eax, dword [esp + 0x58]
cmp eax, esi
jne 0x615b44
xor eax, eax
jmp 0x615b47
add eax, 0x10
mov esi, dword [edi + 0x30]
test esi, esi
je 0x6160a3
cmp ebx, 5
jl 0x615f63
cmp ebx, 9
jg 0x615f63
mov esi, dword [edi]
mov eax, 0xcccccccd
mul esi
mov eax, 0xd1b71759
mov ecx, edx
mul esi
mov eax, edx
xor edx, edx
shr eax, 0xd
mov esi, 0x64
div esi
mov eax, dword [edi + 0x54]
shr ecx, 3
cmp eax, 2
mov ebx, edx
jne 0x615b93
xor ebx, ebx
mov eax, dword [esp + 0x5c]
cmp eax, 0xffffffff
je 0x6160eb
cmp eax, 0xc
jl 0x6160eb
mov edx, dword [esp + 0x60]
cmp edx, 0xffffffff
je 0x6160eb
test edx, edx
je 0x6160eb
cmp edx, 0x64
je 0x6160eb
cmp edx, 0x14
je 0x6160eb
lea esi, [edx - 1]
cmp esi, 0x63
ja case.0x615c52.103
xor edx, edx
mov dl, byte [esi + 0x61634c]
jmp dword [edx*4 + 0x616328]
cmp eax, 0x65
je 0x615c02
cmp eax, 0x68
jle case.0x615c52.103
cmp eax, 0x6a
jg case.0x615c52.103
mov eax, 0x14f8b589
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x3e8
cdq
idiv ecx
lea eax, [esi + esi*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
shl ecx, 5
add ecx, edx
add ecx, 0x3e8
jmp case.0x615be4.8
add eax, 0xffffff9a
cmp eax, 0xa
ja case.0x615c52.103
xor edx, edx
mov dl, byte [eax + 0x6163b8]
jmp dword [edx*4 + 0x6163b0]
mov eax, 0x14f8b589
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x3e8
cdq
idiv ecx
lea eax, [esi + esi*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
shl ecx, 5
add ecx, edx
add ecx, 0x7d0
jmp case.0x615be4.8
cmp eax, 0x67
je 0x615cac
cmp eax, 0x6c
jle case.0x615c52.103
cmp eax, 0x6e
jg case.0x615c52.103
mov eax, 0x14f8b589
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x3e8
cdq
idiv ecx
lea eax, [esi + esi*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
shl ecx, 5
add ecx, edx
add ecx, 0xbb8
jmp case.0x615be4.8
cmp eax, 0x68
je 0x615cff
cmp eax, 0x6e
jle case.0x615c52.103
cmp eax, 0x70
jg case.0x615c52.103
mov eax, 0x14f8b589
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x3e8
cdq
idiv ecx
lea eax, [esi + esi*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
shl ecx, 5
add ecx, edx
add ecx, 0xfa0
jmp case.0x615be4.8
cmp eax, 0xc9
je 0x615d58
cmp eax, 0xcc
jle case.0x615c52.103
cmp eax, 0xce
jg case.0x615c52.103
mov eax, 0x14f8b589
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x3e8
cdq
idiv ecx
lea eax, [esi + esi*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
shl ecx, 5
add ecx, edx
add ecx, 0x2af8
jmp case.0x615be4.8
cmp eax, 0xc9
jl case.0x615c52.103
cmp eax, 0xd4
jg case.0x615c52.103
mov eax, 0x14f8b589
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x3e8
cdq
idiv ecx
lea eax, [esi + esi*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
shl ecx, 5
add ecx, edx
add ecx, 0x2ee0
jmp case.0x615be4.8
cmp eax, 0xc9
jl case.0x615c52.103
cmp eax, 0xd4
jg case.0x615c52.103
mov eax, 0x14f8b589
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov esi, edx
mov ecx, 0x3e8
cdq
idiv ecx
lea eax, [esi + esi*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*4]
shl ecx, 5
add ecx, edx
add ecx, 0x32c8
jmp case.0x615be4.8
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x615f1b
mov eax, dword [esp + 0x18]
test ebx, ebx
je 0x615eae
test eax, eax
jne 0x615e47
mov eax, 0x6a3560
push eax
mov eax, ecx
cdq
mov esi, 0xa
idiv esi
mov eax, 0x66666667
push edx
imul ecx
sar edx, 2
mov esi, edx
mov eax, edx
shr esi, 0x1f
add eax, esi
mov esi, 0x64
cdq
idiv esi
mov eax, 0x10624dd3
push edx
imul ecx
sar edx, 6
mov esi, edx
mov eax, edx
shr esi, 0x1f
add eax, esi
mov esi, 0x2710
cdq
idiv esi
mov eax, 0x6b5fca6b
push edx
imul ecx
sar edx, 0x16
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
push ebx
push 0x6d8e44
push ebp
call fcn.0067429f
add esp, 0x20
jmp 0x615f1b
test eax, eax
jne 0x615eb7
mov eax, 0x6a3560
push eax
mov eax, ecx
cdq
mov esi, 0xa
idiv esi
mov eax, 0x66666667
push edx
imul ecx
sar edx, 2
mov esi, edx
mov eax, edx
shr esi, 0x1f
add eax, esi
mov esi, 0x64
cdq
idiv esi
mov eax, 0x10624dd3
push edx
imul ecx
sar edx, 6
mov esi, edx
mov eax, edx
shr esi, 0x1f
add eax, esi
mov esi, 0x2710
cdq
idiv esi
mov eax, 0x6b5fca6b
push edx
imul ecx
sar edx, 0x16
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6d8e28
push ebp
call fcn.0067429f
add esp, 0x1c
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
mov ecx, dword [esp + 0x50]
push ebx
call fcn.00403350
test al, al
je 0x6160eb
mov eax, dword [esp + 0x4c]
mov ecx, ebx
mov edx, ecx
mov esi, ebp
mov edi, dword [eax + 4]
push ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
call fcn.00403330
jmp 0x6160eb
test eax, eax
je 0x6160eb
mov ecx, dword [eax + 0x2c]
mov eax, dword [esp + 0x18]
test ecx, ecx
jne 0x61601d
test eax, eax
jne 0x615f83
mov eax, 0x6a3560
push eax
mov eax, esi
xor edx, edx
mov ecx, 0xa
div ecx
mov eax, 0xcccccccd
mov ecx, 0x64
push edx
mul esi
mov eax, edx
xor edx, edx
shr eax, 3
div ecx
mov eax, 0x10624dd3
mov ecx, 0x2710
push edx
mul esi
mov eax, edx
xor edx, edx
shr eax, 6
div ecx
mov eax, 0x6b5fca6b
push edx
mul esi
shr edx, 0x16
push edx
push 0x6d8e28
push ebp
call fcn.0067429f
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov ebx, ecx
mov ecx, dword [esp + 0x50]
push ebx
call fcn.00403350
test al, al
je 0x6160eb
mov eax, dword [esp + 0x4c]
mov ecx, ebx
mov edx, ecx
mov esi, ebp
mov edi, dword [eax + 4]
push ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
call fcn.00403330
jmp 0x6160eb
test eax, eax
jne 0x616026
mov eax, 0x6a3560
push eax
mov eax, ecx
xor edx, edx
mov esi, 0xa
div esi
mov eax, 0xcccccccd
mov esi, 0x64
push edx
mul ecx
mov eax, edx
xor edx, edx
shr eax, 3
div esi
mov eax, 0x10624dd3
mov esi, 0x2710
push edx
mul ecx
mov eax, edx
xor edx, edx
shr eax, 6
div esi
mov eax, 0x6b5fca6b
push edx
mul ecx
shr edx, 0x16
push edx
push 0x6d8e28
push ebp
call fcn.0067429f
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov ebx, ecx
mov ecx, dword [esp + 0x50]
push ebx
call fcn.00403350
test al, al
je 0x6160eb
mov eax, dword [esp + 0x4c]
mov ecx, ebx
mov esi, ebp
mov edi, dword [eax + 4]
jmp 0x6160d2
mov edi, 0x6dfe28
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
mov ecx, dword [esp + 0x50]
push ebx
call fcn.00403350
test al, al
je 0x6160eb
mov eax, dword [esp + 0x4c]
mov ecx, ebx
mov esi, 0x6dfe28
mov edi, dword [eax + 4]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov eax, dword [esp + 0x50]
test eax, eax
je 0x6162d5
mov eax, dword [esp + 0x48]
xor edx, edx
mov ecx, 0x3e8
div ecx
mov eax, dword [esp + 0x44]
lea ecx, [esp + 0x4c]
push ecx
mov dword [esp + 0x50], edx
xor edx, edx
mov dl, byte [eax + 4]
mov esi, dword [edx*4 + 0x8186f8]
lea edx, [esp + 0x58]
push edx
lea ecx, [esi + 0x14]
call fcn.00453310
mov esi, dword [esi + 0x18]
mov eax, dword [esp + 0x54]
cmp eax, esi
je 0x6162d5
add eax, 0x10
test eax, eax
je 0x6162d5
mov ecx, dword [eax + 0x30]
test ecx, ecx
jne 0x6161f2
mov eax, dword [esp + 0x44]
xor edx, edx
mov esi, 0xa
mov ecx, dword [eax + 0x34]
mov eax, ecx
div esi
mov eax, 0xcccccccd
mov esi, 0x64
push edx
mul ecx
mov eax, edx
xor edx, edx
shr eax, 3
div esi
mov eax, 0x10624dd3
mov esi, 0x2710
push edx
mul ecx
mov eax, edx
xor edx, edx
shr eax, 6
div esi
mov eax, 0x6b5fca6b
push edx
mul ecx
shr edx, 0x16
push edx
push 0x6d515c
push ebp
call fcn.0067429f
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov ebx, ecx
mov ecx, dword [esp + 0x54]
push ebx
call fcn.00403350
test al, al
je 0x6162d5
mov eax, dword [esp + 0x50]
mov ecx, ebx
mov edx, ecx
mov esi, ebp
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
jmp 0x6162d5
mov eax, ecx
xor edx, edx
mov esi, 0xa
div esi
mov eax, 0xcccccccd
mov esi, 0x64
push edx
mul ecx
mov eax, edx
xor edx, edx
shr eax, 3
div esi
mov eax, 0x10624dd3
mov esi, 0x2710
push edx
mul ecx
mov eax, edx
xor edx, edx
shr eax, 6
div esi
mov eax, 0x6b5fca6b
push edx
mul ecx
shr edx, 0x16
push edx
push 0x6d515c
push ebp
call fcn.0067429f
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
mov esi, dword [esp + 0x50]
not ecx
dec ecx
mov ebx, ecx
mov ecx, esi
call fcn.00403470
cmp eax, ebx
jae 0x616265
call fcn.006713ab
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x61628a
mov al, byte [ecx - 1]
test al, al
je 0x61628a
cmp al, 0xff
je 0x61628a
test ebx, ebx
jne 0x6162ae
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004031c0
jmp 0x6162d5
test ebx, ebx
jne 0x616299
push 1
mov ecx, esi
call fcn.004031c0
jmp 0x6162d5
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x6162a5
cmp eax, ebx
jae 0x6162b6
push 1
mov ecx, esi
call fcn.004031c0
push ebx
mov ecx, esi
call fcn.00403480
mov edi, dword [esi + 4]
mov ecx, ebx
mov eax, ecx
mov esi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x54]
call fcn.00403330
push ebp
mov byte [esp + 0x40], 0
call fcn.006713a0
mov ecx, dword [esp + 0x1c]
add esp, 4
test ecx, ecx
mov dword [esp + 0x3c], 0xffffffff
je 0x61630f
mov al, byte [ecx - 1]
test al, al
je 0x616305
cmp al, 0xff
je 0x616305
dec al
mov byte [ecx - 1], al
jmp 0x61630f
dec ecx
push ecx
call fcn.006713a0
add esp, 4
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x30
ret