Function at 0x46f4d0
Capabilities:
Terminate process

Disassembly:
sub esp, 0x404
push ebx
push ebp
mov ebp, dword [esp + 0x410]
push esi
mov esi, dword [esp + 0x41c]
xor ebx, ebx
cmp ebp, 4
push edi
mov edi, ecx
mov dword [esi], ebx
mov dword [esi + 4], ebx
jge 0x46f50d
call fcn.0046f2f0
lea eax, [eax + eax*8]
shl eax, 2
cdq
mov ecx, edx
mov dword [esi], eax
or eax, ecx
mov dword [esi + 4], edx
je 0x46f53d
mov eax, dword [esp + 0x41c]
cmp eax, 3
jle 0x46f650
lea ecx, [esp + 0x14]
push ecx
mov ecx, edi
call fcn.0046ee10
test eax, eax
jne 0x46f54f
lea edx, [esp + 0x14]
push edx
mov ecx, edi
call fcn.0046e9a0
test eax, eax
jne 0x46f54f
mov dword [edi + 0x10], ebx
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x404
ret 0xc
mov eax, dword [esi + 4]
mov edi, dword [esi]
push ebx
push 0x510
push eax
push edi
mov dword [esp + 0x20], ebx
call fcn.00487250
push ebx
push 0x24
push edx
push eax
call fcn.00487350
push 0
mov ebp, eax
mov eax, dword [esi + 4]
push 0xb640
push eax
push edi
mov ebx, edx
call fcn.00487350
add ebp, eax
adc ebx, edx
mov ecx, 0x28
xor edi, edi
nop
mov al, byte [esp + ecx + 0x14]
cmp al, 0x60
jbe 0x46f59e
sub al, 0x20
mov byte [esp + ecx + 0x14], al
mov al, byte [esp + ecx + 0x14]
cmp al, 0x5a
ja 0x46f5e2
cmp al, 0x40
jbe 0x46f5ae
sub al, 0x37
jmp 0x46f5b8
cmp al, 0x31
jb 0x46f5e2
cmp al, 0x3a
jae 0x46f5e2
sub al, 0x30
mov byte [esp + ecx + 0x14], al
mov byte [esp + edi + 0x14], al
add edi, 3
cmp ecx, 0x64
jle 0x46f5d4
movzx eax, byte [esp + ecx + 0x14]
cdq
add ebp, eax
adc ebx, edx
jmp 0x46f5e2
cmp ecx, 0x4c
mov dword [esp + 0x10], edi
jle 0x46f5e2
mov ecx, 0x6c
inc ecx
cmp ecx, 0xb8
jl 0x46f590
mov ecx, dword [esp + 0x10]
mov eax, 6
cmp ecx, eax
jle 0x46f619
jmp 0x46f600
mov edx, dword [esp + 0x10]
lea ecx, [esp + eax + 0x14]
mov dl, byte [edx + ecx - 0xf]
mov byte [ecx], dl
mov ecx, dword [esp + 0x10]
add eax, 3
cmp eax, ecx
jl 0x46f600
cmp dword [esp + 0x418], 4
jge 0x46f642
push 0
push 0x1a
push ebx
push ebp
call fcn.00487250
mov ebp, dword [esi]
mov ebx, dword [esi + 4]
add eax, ebp
adc edx, ebx
add eax, 0xa
adc edx, 0
mov dword [esi], eax
mov dword [esi + 4], edx
mov ebp, dword [esp + 0x418]
mov eax, dword [esp + 0x41c]
sub eax, ebp
cmp ebp, 3
mov ebx, eax
ja 0x46f6cb
jmp dword [ebp*4 + 0x40fba8]
lea edi, [ebp - 3]
add ebx, 0x64
cmp ebx, 5
ja 0x46f798
jmp dword [ebx*4 + 0x40fbb8]
mov eax, ebx
cdq
mov ecx, 0x64
idiv ecx
mov ebx, edx
lea eax, [ebx + 1]
cmp edi, eax
mov dword [esp + 0x10], ebx
jge 0x46f757
lea edx, [esp + edi + 0x14]
lea ebp, [edx + edi*2]
cmp edi, ebx
movzx eax, byte [ebp]
cdq
jge 0x46f742
sub ebx, edi
nop
push 0
push 0x24
push edx
push eax
call fcn.00487310
dec ebx
jne 0x46f730
mov ebx, dword [esp + 0x10]
add dword [esi], eax
mov ecx, dword [esi + 4]
adc ecx, edx
inc edi
lea eax, [ebx + 1]
add ebp, 3
cmp edi, eax
mov dword [esi + 4], ecx
jl 0x46f724
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x404
ret 0xc
cmp ebx, 0x67
jge 0x46f706
push 0
call fcn.004878f2
pushal
cli
inc eax
add byte [edx - 6], ch
inc eax
add byte [edx + edi*8 - 0x551ffc0], cl
inc eax
add byte [esi], al
sti
inc eax
add cl, ah
cli
inc eax
add dh, ch
cli
inc eax
add byte [ecx - 5], ch
inc eax
add byte [ecx - 5], bh
inc eax
add byte [ebx + edi*8 - 0x137cffc0], cl
sub esp, 8
push ebx
lea eax, [esp + 4]
push eax
push 8
push 0
mov ebx, ecx
call fcn.0046f4d0
test eax, eax
jne 0x46f7f2
mov dword [ebx + 0x10], eax
pop ebx
add esp, 8
ret 8
push ebp
mov ebp, dword [esp + 0x14]
push esi
mov esi, dword [esp + 0xc]
push edi
mov edi, dword [esp + 0x14]
mov ecx, ebp
mov dword [ebx + 0x18], esi
mov dword [ebx + 0x1c], edi
call fcn.00466bc0
mov dword [esp + 0x1c], 8
push 0
push 0x24
push edi
push esi
call fcn.00487510
cmp cl, 9
mov dword [esp + 0x14], ebx
mov esi, eax
mov edi, edx
jbe 0x46f838
movzx cx, cl
add ecx, 0x37
push ecx
jmp 0x46f840
movzx dx, cl
add edx, 0x30
push edx
mov ecx, ebp
push 0
call fcn.0046f080
dec dword [esp + 0x1c]
jne 0x46f816
mov eax, dword [ebp]
mov edx, dword [eax - 4]
mov edi, dword [eax - 0xc]
mov ecx, 1
sub ecx, edx
mov edx, dword [eax - 8]
lea esi, [edi + 1]
sub edx, esi
or ecx, edx
jge 0x46f873
push esi
mov ecx, ebp
call fcn.00466c20
mov eax, dword [ebp]
mov cx, word [esp + 0x20]
mov word [eax + edi*2], cx
mov edx, dword [ebp]
mov dword [edx - 0xc], esi
mov eax, dword [ebp]
pop edi
mov word [eax + esi*2], 0
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 8
ret 8