Function at 0x51e630
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x56ee8b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x7c
mov al, byte [esp + 3]
push ebx
push ebp
push esi
mov esi, ecx
xor ebp, ebp
push edi
mov dword [esp + 0x28], esi
mov byte [esp + 0x5c], al
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], ebp
mov dword [esp + 0x68], ebp
or eax, 0xffffffff
mov dword [esp + 0x94], ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x54], 0x572180
mov word [esp + 0x58], ax
mov word [esp + 0x5a], bp
push 6
push 0x59cd54
lea ecx, [esp + 0x24]
mov byte [esp + 0x9c], 1
call fcn.005318a0
mov ecx, dword [0x5adb48]
mov dx, word [0x5adb4c]
mov al, byte [0x5adb4e]
mov dword [esp + 0x44], ecx
mov ecx, dword [0x5b0750]
mov word [esp + 0x48], dx
mov edx, dword [0x5b0754]
mov dword [esp + 0x4c], ecx
mov cx, word [0x5b074c]
mov byte [esp + 0x4a], al
mov eax, dword [0x5b0748]
mov word [esp + 0x40], cx
push 6
push 0x59c0fc
lea ecx, [esp + 0x1c]
mov byte [esp + 0x9c], 2
mov dword [esp + 0x58], edx
mov dword [esp + 0x44], eax
call fcn.005318a0
push 6
push 0x5bcdb4
lea ecx, [esp + 0x20]
mov byte [esp + 0x9c], 3
call fcn.005318a0
mov eax, dword [esp + 0x9c]
mov byte [esp + 0x94], 4
and eax, 0xff
sub eax, ebp
je 0x51f02d
dec eax
jne 0x51f461
push ebp
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0xb
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59ce08
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
push ebp
push ebp
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0xc
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x5b06f8
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
mov ecx, esi
call fcn.00521230
mov edx, dword [esp + 0xa0]
lea ecx, [esp + 0x1c]
push edx
push 5
call fcn.00531ad0
lea edi, [esi + 0xe]
lea ebx, [esi + 0x78]
push 2
lea eax, [esp + 0x48]
push edi
push eax
mov ecx, ebx
mov byte [esp + 0x54], 1
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], ebx
call fcn.0043cb50
cmp ax, bp
jne 0x51e8a7
push ebp
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59b920
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0xd
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59ba20
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov ecx, dword [esp + 0x60]
cmp ecx, ebp
je 0x51ee9f
mov al, byte [ecx - 1]
test al, al
je 0x51ee95
cmp al, 0xff
je 0x51ee95
dec al
mov byte [ecx - 1], al
xor ax, ax
jmp 0x51f47b
mov cl, byte [esi + 0x31]
push 2
lea edx, [esp + 0x48]
mov byte [0x5bca3b], cl
push edi
push edx
mov ecx, ebx
mov byte [esp + 0x54], 3
call fcn.0043cb50
cmp ax, bp
jne 0x51e96f
push ebp
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59b920
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0xe
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59ba20
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov ecx, dword [esp + 0x60]
cmp ecx, ebp
je 0x51ee9f
mov al, byte [ecx - 1]
test al, al
je 0x51ee95
cmp al, 0xff
je 0x51ee95
dec al
mov byte [ecx - 1], al
xor ax, ax
jmp 0x51f47b
mov ecx, 0x5bcb5b
lea eax, [esi + 0x1a]
mov dword [esp + 0x20], 4
mov dl, byte [eax]
inc eax
mov byte [ecx], dl
mov edx, dword [esp + 0x20]
inc ecx
dec edx
mov dword [esp + 0x20], edx
jne 0x51e97f
push 2
lea eax, [esp + 0x48]
push edi
push eax
mov ecx, ebx
mov byte [esp + 0x54], 4
call fcn.0043cb50
cmp ax, bp
jne 0x51ea2e
push ebp
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59b920
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0xf
mov ecx, esp
mov dword [esp + 0x3c], esp
push 6
push 0x59ba20
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov ecx, dword [esp + 0x60]
cmp ecx, ebp
jmp 0x51ee7b
mov dl, byte [esi + 0x42]
push 0x64
test dl, dl
setne cl
mov byte [0x5bcadd], cl
mov dl, byte [esi + 0x2d]
mov byte [0x5bcaef], dl
mov al, byte [esi + 0x24]
mov byte [0x5bcb13], al
mov cl, byte [esi + 0x25]
mov byte [0x5bcb14], cl
mov dl, byte [esi + 0x2f]
mov byte [0x5bcb25], dl
mov al, byte [esi + 0x28]
mov byte [0x5bcb37], al
mov cl, byte [esi + 0x3a]
mov byte [0x5bcb01], cl
call fcn.0043d4c0
add esp, 4
mov ecx, esi
call fcn.0051f4a0
push 2
lea edx, [esp + 0x50]
push edi
push edx
mov ecx, ebx
mov byte [esp + 0x5d], 0xce
call fcn.0043cb50
mov byte [esi + 0x72], 0
push ecx
lea eax, [esp + 0x20]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00531810
mov ecx, dword [0x5c6634]
call fcn.005396d0
push 0x1e
push 5
lea ecx, [esp + 0x1c]
call fcn.00531ad0
push 1
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00531810
mov ecx, dword [0x5c6634]
call fcn.00539850
push 3
push 5
lea ecx, [esp + 0x1c]
call fcn.00531ad0
push 1
push ecx
lea eax, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00531810
mov ecx, dword [0x5c6634]
call fcn.00539850
mov dword [esp + 0x20], ebp
mov cl, byte [esp + 0x20]
add cl, 3
push ecx
push 5
lea ecx, [esp + 0x20]
call fcn.00531ad0
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x38], esp
push edx
call fcn.00531810
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x70]
push eax
call fcn.00521870
mov esi, eax
mov eax, dword [esi + 8]
mov ecx, dword [0x57217c]
mov ebp, eax
mov byte [esp + 0x94], 0x10
cmp ecx, ebp
jae 0x51eb5c
mov ebp, ecx
lea edx, [esp + 0x5c]
cmp edx, esi
jne 0x51eb81
push ecx
push ebp
lea ecx, [esp + 0x64]
call fcn.00404c30
push 0
push 0
lea ecx, [esp + 0x64]
call fcn.00404c30
jmp 0x51ec0a
test ebp, ebp
jbe 0x51ebce
cmp ebp, eax
jne 0x51ebce
mov eax, dword [esi + 4]
test eax, eax
jne 0x51eb95
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x51ebce
push 1
lea ecx, [esp + 0x60]
call fcn.00404bb0
mov eax, dword [esi + 4]
test eax, eax
jne 0x51ebb2
mov eax, 0x572184
mov dword [esp + 0x60], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x64], ecx
mov esi, dword [esi + 0xc]
mov dword [esp + 0x68], esi
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x51ec0a
push 1
push ebp
lea ecx, [esp + 0x64]
call fcn.00404d70
test al, al
je 0x51ec0a
mov esi, dword [esi + 4]
test esi, esi
jne 0x51ebea
mov esi, 0x572184
mov edi, dword [esp + 0x60]
mov ecx, ebp
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x64], ebp
mov byte [ecx + ebp], 0
mov eax, dword [esp + 0x70]
mov byte [esp + 0x94], 4
test eax, eax
je 0x51ec37
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x51ec2e
cmp al, 0xff
je 0x51ec2e
dec al
mov byte [ecx], al
jmp 0x51ec37
push ecx
call fcn.00556360
add esp, 4
mov dl, byte [esp + 0x5c]
sub esp, 0x10
xor edi, edi
mov ebp, esp
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], edi
mov byte [ebp], dl
mov dword [ebp + 4], edi
mov dword [ebp + 8], edi
mov dword [ebp + 0xc], edi
mov ecx, dword [esp + 0x74]
mov eax, dword [0x57217c]
mov ebx, ecx
cmp eax, ebx
mov dword [esp + 0x44], esp
jae 0x51ec78
mov ebx, eax
lea edx, [esp + 0x6c]
cmp ebp, edx
jne 0x51ec97
push eax
push ebx
mov ecx, ebp
call fcn.00404c30
push edi
push edi
mov ecx, ebp
call fcn.00404c30
jmp 0x51ed19
cmp ebx, edi
jbe 0x51ece3
cmp ebx, ecx
jne 0x51ece3
mov eax, dword [esp + 0x70]
cmp eax, edi
jne 0x51ecac
mov eax, 0x572184
cmp byte [eax - 1], 0xfe
jae 0x51ece3
push 1
mov ecx, ebp
call fcn.00404bb0
mov eax, dword [esp + 0x70]
cmp eax, edi
jne 0x51ecc8
mov eax, 0x572184
mov dword [ebp + 4], eax
mov ecx, dword [esp + 0x74]
mov dword [ebp + 8], ecx
mov edx, dword [esp + 0x78]
mov dword [ebp + 0xc], edx
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x51ed19
push 1
push ebx
mov ecx, ebp
call fcn.00404d70
test al, al
je 0x51ed19
mov esi, dword [esp + 0x70]
cmp esi, edi
jne 0x51ecfe
mov esi, 0x572184
mov edi, dword [ebp + 4]
mov ecx, ebx
mov eax, ecx
push ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebp
call fcn.00404d50
push ecx
lea edx, [esp + 0x2c]
mov ecx, esp
mov dword [esp + 0x4c], esp
push edx
mov byte [esp + 0xac], 0x11
call fcn.00531810
mov ecx, dword [0x5c6634]
mov byte [esp + 0xa8], 4
call fcn.00539a20
mov eax, dword [esp + 0x20]
inc eax
cmp ax, 9
mov dword [esp + 0x20], eax
jl 0x51eb0f
mov ecx, dword [0x5c6634]
push 0xff
call fcn.00535f90
mov ecx, dword [0x5c6634]
lea eax, [esp + 0x24]
push eax
call fcn.00539da0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x9c]
mov edi, dword [esp + 0x28]
push ecx
push edx
mov ecx, edi
mov esi, eax
call fcn.0051cc90
movsx eax, si
sub eax, 0
je 0x51eda8
dec eax
je 0x51efef
xor ebp, ebp
jmp 0x51ea99
mov al, byte [edi + 0x72]
push 0
test al, al
jne 0x51edfa
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0x12
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x5b0740
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
xor ebp, ebp
jmp 0x51ea99
push 4
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0x13
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59cd64
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
cmp ax, 4
jne 0x51eea7
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov ecx, dword [esp + 0x60]
test ecx, ecx
je 0x51ee9f
mov al, byte [ecx - 1]
test al, al
je 0x51ee95
cmp al, 0xff
je 0x51ee95
dec al
mov byte [ecx - 1], al
xor ax, ax
jmp 0x51f47b
dec ecx
push ecx
call fcn.00556360
add esp, 4
xor ax, ax
jmp 0x51f47b
push 0
push 0
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0x14
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59ccd4
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
mov ecx, edi
call fcn.0051e460
mov ecx, edi
call fcn.0051f4a0
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov esi, 0x5bca34
mov ebp, 0x13
push 0xc8
call fcn.0043d4c0
add esp, 4
mov ecx, ebx
push 2
push edi
push esi
call fcn.0043cb50
push 2
lea eax, [esp + 0x40]
push edi
push eax
mov ecx, ebx
call fcn.0043cb50
add esi, 0x12
dec ebp
jne 0x51ef0b
push 0x64
call fcn.0043d4c0
add esp, 4
mov esi, 0x5bcb8a
mov ebp, 8
push 0x64
call fcn.0043d4c0
add esp, 4
mov ecx, ebx
push 2
push edi
push esi
call fcn.0043cb50
add esi, 0x12
dec ebp
jne 0x51ef4c
push 0
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0x15
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x5adb08
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
push 0
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0x16
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59d1d4
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov ecx, dword [esp + 0x60]
test ecx, ecx
jmp 0x51f2fa
push ebp
push ebp
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 5
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59c0ec
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
mov ecx, esi
call fcn.00521230
mov ecx, dword [esp + 0xa0]
push ecx
push 5
lea ecx, [esp + 0x24]
call fcn.00531ad0
lea edx, [esi + 0xe]
push 2
lea eax, [esp + 0x48]
push edx
push eax
lea ecx, [esi + 0x78]
call fcn.0043cb50
cmp ax, bp
jne 0x51f147
push ebp
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b920
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 6
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59ba20
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov ecx, dword [esp + 0x60]
cmp ecx, ebp
je 0x51ee9f
mov al, byte [ecx - 1]
test al, al
je 0x51ee95
cmp al, 0xff
je 0x51ee95
dec al
mov byte [ecx - 1], al
xor ax, ax
jmp 0x51f47b
mov bl, 7
push ecx
lea edx, [esp + 0x20]
mov ecx, esp
mov dword [esp + 0x3c], esp
push edx
call fcn.00531810
mov ecx, dword [0x5c6634]
call fcn.005396d0
push 0x1e
push 5
lea ecx, [esp + 0x1c]
call fcn.00531ad0
push 1
push ecx
lea eax, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x40], esp
push eax
call fcn.00531810
mov ecx, dword [0x5c6634]
call fcn.00539850
push 3
push 5
lea ecx, [esp + 0x1c]
call fcn.00531ad0
push 1
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x40], esp
push edx
call fcn.00531810
mov ecx, dword [0x5c6634]
call fcn.00539850
xor edi, edi
push edi
push 5
lea ecx, [esp + 0x20]
call fcn.00531ad0
push ecx
lea eax, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x3c], esp
push eax
call fcn.00531810
lea ecx, [esp + 0x80]
push ecx
mov ecx, esi
call fcn.00521870
mov edx, dword [0x57217c]
lea ecx, [esp + 0x5c]
push edx
push ebp
push eax
mov byte [esp + 0xa0], bl
call fcn.004049b0
mov eax, dword [esp + 0x80]
mov byte [esp + 0x94], 4
cmp eax, ebp
je 0x51f232
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x51f229
cmp al, 0xff
je 0x51f229
dec al
mov byte [ecx], al
jmp 0x51f232
push ecx
call fcn.00556360
add esp, 4
mov al, byte [esp + 0x5c]
sub esp, 0x10
mov ecx, esp
mov dword [esp + 0x90], ebp
mov dword [esp + 0x94], ebp
mov dword [esp + 0x98], ebp
mov byte [ecx], al
mov dword [ecx + 4], ebp
mov dword [ecx + 8], ebp
mov dword [ecx + 0xc], ebp
mov edx, dword [0x57217c]
mov dword [esp + 0x48], esp
push edx
lea eax, [esp + 0x70]
push ebp
push eax
call fcn.004049b0
push ecx
lea edx, [esp + 0x2c]
mov ecx, esp
mov dword [esp + 0x48], esp
push edx
mov byte [esp + 0xac], 8
call fcn.00531810
mov ecx, dword [0x5c6634]
mov byte [esp + 0xa8], 4
call fcn.00539a20
inc edi
cmp di, 3
jl 0x51f1bd
mov ecx, dword [0x5c6634]
call fcn.00539bf0
movsx eax, ax
sub eax, ebp
je 0x51f31d
dec eax
jne 0x51f149
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov ecx, dword [esp + 0x60]
cmp ecx, ebp
je 0x51f477
mov al, byte [ecx - 1]
test al, al
je 0x51f46d
cmp al, 0xff
je 0x51f46d
dec al
mov byte [ecx - 1], al
jmp 0x51f477
push ebp
push 4
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 9
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59cd64
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
cmp ax, 4
jne 0x51f3c5
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov ecx, dword [esp + 0x60]
cmp ecx, ebp
je 0x51ee9f
mov al, byte [ecx - 1]
test al, al
je 0x51ee95
cmp al, 0xff
je 0x51ee95
dec al
mov byte [ecx - 1], al
xor ax, ax
jmp 0x51f47b
mov ecx, esi
call fcn.0051dfe0
push ebp
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x59b910
call fcn.005318a0
push ecx
mov byte [esp + 0xa4], 0xa
mov ecx, esp
mov dword [esp + 0x44], esp
push 6
push 0x5adb08
call fcn.005318a0
mov ecx, 0x5c6628
mov byte [esp + 0xa4], 4
call fcn.00533b90
lea ecx, [esp + 0x18]
mov byte [esp + 0x94], 3
call fcn.00531940
lea ecx, [esp + 0x14]
mov byte [esp + 0x94], 2
call fcn.00531940
lea ecx, [esp + 0x1c]
mov byte [esp + 0x94], 1
call fcn.00531940
mov eax, dword [esp + 0x60]
cmp eax, ebp
je 0x51f477
mov cl, byte [eax - 1]
test cl, cl
je 0x51f45d
cmp cl, 0xff
je 0x51f45d
dec cl
mov byte [eax - 1], cl
jmp 0x51f477
dec eax
push eax
jmp 0x51f46f
mov ecx, esi
call fcn.0044e2d0
jmp 0x51f2c1
dec ecx
push ecx
call fcn.00556360
add esp, 4
mov ax, 1
mov ecx, dword [esp + 0x8c]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x88
ret 8