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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
mov eax, 0x1090
call fcn.00405dc0
mov eax, dword [0x416128]
mov eax, dword [eax]
xor eax, ebp
mov dword [esp + 0x1088], eax
movzx eax, word [0x418130]
inc eax
mov word [0x418132], ax
movzx eax, ax
shl eax, 2
lea esi, [eax + eax*2]
push esi
call sub.msvcrt.dll_malloc
add esp, 4
mov dword [0x418134], eax
push esi
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
movzx eax, byte [0x418072]
movzx edx, byte [0x41805e]
imul edx, eax
cmp dx, 0x10
setb cl
shl edx, cl
mov word [0x418138], dx
movzx ecx, dx
movzx eax, word [0x41802c]
imul eax, ecx
jo 0x404002
mov word [0x41813a], ax
lea eax, [esp + 0x7c]
push 0x100c
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
push 0x418044
call sub.msvcrt.dll_strlen
add esp, 4
movzx ecx, ax
cmp ecx, 0x1b
mov esi, 0x1a
cmovb esi, eax
test si, si
je 0x402967
xor ecx, ecx
call 0x4041c0
test eax, eax
je 0x402967
mov ebx, eax
test bl, 3
jne 0x403a25
mov dword [ebx], 0
lea eax, [ebx + 4]
test al, 3
jne 0x403a25
mov word [ebx + 4], 0x3ff
lea eax, [ebx + 8]
test al, 3
jne 0x403a25
mov word [ebx + 8], si
movzx esi, si
push esi
call sub.msvcrt.dll_malloc
add esp, 4
add ebx, 0xc
test bl, 3
jne 0x403a25
mov dword [ebx], eax
push esi
push 0x418044
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
movzx eax, word [0x41813a]
imul eax, eax, 0x7a120
jo 0x404002
movzx ecx, byte [0x418073]
movzx edx, word [0x41802c]
imul edx, ecx
shl edx, 3
lea ecx, [edx + edx*2]
cvtsi2sd xmm1, ecx
divsd xmm1, qword [section..rdata]
cvtsi2sd xmm0, eax
divsd xmm0, xmm1
addsd xmm0, qword [0x416008]
ucomisd xmm0, qword [0x416010]
jbe 0x403ffa
movsd xmm1, qword [0x416018]
ucomisd xmm1, xmm0
jbe 0x403ffa
cvttsd2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
subsd xmm0, qword [0x416020]
cvttsd2si eax, xmm0
and eax, edx
or eax, ecx
mov ecx, eax
shr ecx, 0x18
mov byte [esp + 0x78], cl
lea edx, [esp + 0x78]
cmp edx, 0xffffffff
je 0x4039b0
mov ecx, eax
shr ecx, 0x10
mov byte [esp + 0x79], cl
cmp edx, 0xfffffffd
ja 0x4039b0
mov byte [esp + 0x7a], ah
cmp edx, 0xfffffffc
ja 0x4039b0
mov byte [esp + 0x7b], al
cmp edx, 0xffffffff
je 0x4039b0
mov dword [esp + 0xc], 0
xor ecx, ecx
call 0x4041c0
test eax, eax
je 0x402a96
mov ebx, eax
test bl, 3
jne 0x403a25
mov dword [ebx], 0
lea eax, [ebx + 4]
test al, 3
jne 0x403a25
mov word [ebx + 4], 0x51ff
lea eax, [ebx + 8]
test al, 3
jne 0x403a25
mov word [ebx + 8], 3
push 3
call sub.msvcrt.dll_malloc
add esp, 4
add ebx, 0xc
test bl, 3
jne 0x403a25
lea ecx, [esp + 0x79]
mov dword [ebx], eax
mov dl, byte [ecx + 2]
mov byte [eax + 2], dl
movzx ecx, word [ecx]
mov word [eax], cx
lea eax, [esp + 0x87]
mov dword [esp + 0x40], eax
not eax
mov dword [esp + 0x34], eax
mov esi, 0x4a
xor edi, edi
jmp 0x402ac1
add esi, 0x40
add dword [esp + 0xc], 4
cmp edi, 0x40
je 0x402d3d
lea eax, [esi - 0x4a]
cmp eax, dword [esp + 0x34]
ja 0x4039b0
mov byte [esp + esi + 0x3d], 0
mov byte [esp + esi + 0x40], 0xff
mov dword [esp + esi + 0x77], 0xffff
mov word [esp + esi + 0x7b], 0
mov eax, edi
add eax, 0x4180c0
je 0x4039b0
cmp eax, 0x4180c0
jb 0x4039b0
movzx eax, byte [edi + 0x4180c0]
mov byte [esp + esi + 0x3e], al
mov byte [esp + esi + 0x41], 0x40
movzx eax, byte [edi + 0x418080]
and al, 0x7f
mov byte [esp + esi + 0x3f], al
mov dword [esp + 0x10], edi
cmp word [0x41811c], di
jbe 0x402be5
mov eax, dword [0x418120]
mov ecx, dword [esp + 0xc]
add ecx, eax
cmp ecx, eax
mov ebx, dword [esp + 0x10]
jb 0x4039b0
test eax, eax
je 0x4039b0
test ecx, ecx
je 0x4039b0
test cl, 3
jne 0x403a25
mov eax, dword [eax + ebx*4]
mov dword [esp + 0x20], eax
push eax
call sub.msvcrt.dll_strlen
add esp, 4
mov edi, eax
movzx eax, di
cmp eax, 0x15
mov eax, 0x14
cmovae edi, eax
lea eax, [ebx + 1]
movzx ecx, ax
call 0x4041c0
test eax, eax
je 0x402be5
mov ebx, eax
test bl, 3
jne 0x403a25
mov dword [ebx], 0
lea eax, [ebx + 4]
test al, 3
jne 0x403a25
mov word [ebx + 4], 0x3ff
lea eax, [ebx + 8]
test al, 3
jne 0x403a25
mov word [ebx + 8], di
movzx edi, di
push edi
call sub.msvcrt.dll_malloc
add esp, 4
add ebx, 0xc
test bl, 3
jne 0x403a25
mov dword [ebx], eax
push edi
push dword [esp + 0x24]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
movzx eax, byte [esp + esi + 0x3e]
xorps xmm0, xmm0
cvtsi2sd xmm0, eax
mulsd xmm0, qword [0x416028]
sub esp, 8
movsd qword [esp], xmm0
call fcn.00405160
add esp, 8
fstp qword [esp + 0x70]
movsd xmm0, qword [esp + 0x70]
mulsd xmm0, qword [0x416030]
xorpd xmm1, xmm1
minsd xmm1, xmm0
divsd xmm1, qword [0x416038]
sub esp, 0x10
movsd qword [esp + 8], xmm1
mov dword [esp + 4], 0x40240000
mov dword [esp], 0
call fcn.004052a0
add esp, 0x10
fstp qword [esp + 0x68]
movsd xmm1, qword [esp + 0x68]
mulsd xmm1, qword [0x416040]
addsd xmm1, qword [0x416008]
ucomisd xmm1, qword [0x416010]
jbe 0x403ffa
movsd xmm0, qword [0x416048]
ucomisd xmm0, xmm1
jbe 0x403ffa
movsd qword [esp + 0x20], xmm1
mov ebx, dword [esp + 0x10]
lea edi, [ebx + 1]
movzx ecx, di
call 0x4041c0
test eax, eax
je 0x402cda
test al, 3
jne 0x403a25
mov dword [eax], 0
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, ebx
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 7
add eax, 6
test al, 1
jne 0x403a25
cvttsd2si ecx, qword [esp + 0x20]
mov byte [eax], cl
movzx eax, byte [esp + esi + 0x3f]
mov ecx, eax
add cl, al
cmp al, 0x40
movzx ebx, cl
mov eax, 0x7f
cmovae ebx, eax
movzx ecx, di
call 0x4041c0
test eax, eax
je 0x402ab0
test al, 3
jne 0x403a25
mov dword [eax], 0
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, dword [esp + 0x10]
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0xa
add eax, 6
test al, 1
jne 0x403a25
mov byte [eax], bl
jmp 0x402ab0
mov al, byte [0x418072]
mov byte [esp + 0x86], al
mov word [esp + 0x84], 0
mov dword [esp + 0x7c], 0
mov word [esp + 0x80], 0
cmp word [0x418060], 0
je 0x4039b4
add dword [esp + 0x40], 6
xor eax, eax
mov ecx, 0x4160f8
not ecx
mov dword [esp + 0x44], ecx
jmp 0x402db0
mov eax, dword [esp + 0x80]
inc eax
mov word [esp + 0x80], ax
movzx eax, ax
cmp ax, word [0x418060]
jae 0x4039b4
mov ecx, dword [0x418100]
lea edx, [eax + ecx]
cmp edx, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test edx, edx
je 0x4039b0
movzx ebx, byte [ecx + eax]
cmp ebx, 0xfe
je 0x402d90
cmp bl, 0xff
je 0x4039b4
movzx eax, word [esp + 0x84]
mov word [esp + 0x82], ax
mov word [esp + 0x84], 0
shl ebx, 4
mov ecx, dword [0x41812c]
lea edx, [ebx + ecx]
cmp edx, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test edx, edx
je 0x4039b0
mov dword [esp + 0x48], ebx
nop dword [eax + eax]
test cl, 3
jne 0x403a25
lea ecx, [ecx + ebx + 2]
test cl, 1
jne 0x403a25
cmp ax, word [ecx]
jae 0x402d90
movzx eax, ax
mov ecx, eax
mov dword [esp + 0x4c], eax
shl eax, 7
lea eax, [eax + eax*2]
mov dword [esp + 0x50], eax
xor edx, edx
lea edi, [esp + 0x8d]
mov esi, dword [esp + 0x40]
jmp 0x402e9c
cvttsd2si ecx, qword [esp + 0x10]
mov byte [eax], cl
nop dword [eax]
inc edx
mov esi, dword [esp + 0x38]
add esi, 0x40
mov edi, dword [esp + 0x54]
add edi, 0x40
cmp edx, 0x40
mov ebx, dword [esp + 0x48]
je 0x403970
mov eax, dword [0x41812c]
lea ecx, [ebx + eax]
cmp ecx, eax
jb 0x4039b0
test eax, eax
je 0x4039b0
test ecx, ecx
je 0x4039b0
test al, 3
jne 0x403a25
lea eax, [eax + ebx + 0xc]
test al, 3
jne 0x403a25
mov ecx, dword [eax]
mov eax, dword [esp + 0x50]
add eax, ecx
cmp eax, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test eax, eax
je 0x4039b0
mov eax, dword [esp + 0x4c]
lea eax, [eax + eax*2]
shl eax, 7
add ecx, eax
lea eax, [edx + edx]
lea eax, [eax + eax*2]
add eax, ecx
jb 0x4039b0
mov dword [esp + 8], ecx
mov eax, edx
shl eax, 6
mov dword [esp + 0x10], eax
cmp eax, dword [esp + 0x34]
ja 0x4039b0
mov eax, dword [esp + 0x10]
lea ecx, [esp + eax + 0x87]
mov dword [esp + 0x1c], ecx
mov byte [esp + eax + 0x8c], 0
lea eax, [esp + eax + 0x8d]
not eax
mov dword [esp + 0x20], eax
mov eax, 0xffffffe6
nop word [eax + eax]
lea ecx, [esi + eax]
cmp ecx, 0xffffffe6
je 0x4039b0
movzx ecx, byte [edi + eax + 0x1a]
add cl, cl
and cl, 2
mov byte [edi + eax + 0x1a], cl
inc eax
jne 0x402f50
mov dword [esp + 0x38], esi
lea esi, [edx + edx*2]
mov ecx, dword [esp + 8]
test byte [ecx + esi*2], 0x22
mov dword [esp + 4], edx
mov dword [esp + 0x30], esi
je 0x403030
mov bl, byte [ecx + esi*2 + 2]
test bl, bl
je 0x403030
mov eax, dword [esp + 0x1c]
cmp byte [eax], bl
je 0x403030
mov eax, dword [esp + 0x1c]
mov byte [eax], bl
dec bl
mov eax, dword [esp + 0x10]
cmp byte [esp + eax + 0xc1], bl
je 0x403030
mov eax, dword [esp + 0x10]
lea eax, [esp + eax + 0xc1]
mov byte [eax], bl
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xc], eax
lea eax, [edx + 1]
movzx ecx, ax
call 0x4041c0
mov ecx, dword [esp + 8]
mov edx, dword [esp + 4]
test eax, eax
je 0x403030
test al, 3
jne 0x403a25
mov ecx, dword [esp + 0xc]
mov dword [eax], ecx
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0xc0
mov byte [eax + 4], cl
mov byte [eax + 5], bl
add eax, 6
test al, 1
jne 0x403a25
mov byte [eax], 0
mov ecx, dword [esp + 8]
mov esi, dword [esp + 0x30]
nop word cs:[eax + eax]
nop dword [eax + eax]
lea eax, [ecx + esi*2]
mov dword [esp + 0x2c], eax
test byte [eax], 0x44
je 0x4030b7
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x30]
mov al, byte [eax + ecx*2 + 3]
cmp al, 0x40
ja 0x403070
mov ecx, dword [esp + 0x10]
cmp byte [esp + ecx + 0x8b], al
je 0x403062
lea ecx, [esp + ecx + 0x8b]
mov byte [ecx], al
mov eax, dword [esp + 0x1c]
or byte [eax + 5], 2
jmp 0x4030b7
cmp al, 0x4a
ja 0x40307b
shl al, 4
dec al
jmp 0x4030a0
cmp al, 0x54
ja 0x403085
add al, 5
or al, 0xf0
jmp 0x4030a0
cmp al, 0x5e
ja 0x403090
shl al, 4
add al, 0xb0
jmp 0x4030a0
cmp al, 0x68
ja 0x403845
add al, 0xa1
nop word [eax + eax]
movzx eax, al
movzx edx, byte [esp + 4]
lea ecx, [esp + 0x7c]
push eax
push 0x44
call 0x404290
add esp, 8
mov eax, dword [esp + 0x2c]
test byte [eax], 0x88
mov ebx, dword [esp + 0x30]
je 0x4030e9
mov ecx, dword [esp + 8]
mov al, byte [ecx + ebx*2 + 4]
add al, 0x40
movzx esi, byte [ecx + ebx*2 + 5]
movsx eax, al
movzx edx, byte [esp + 4]
lea ecx, [esp + 0x7c]
push esi
push eax
call 0x404290
add esp, 8
mov dword [esp + 0x54], edi
mov eax, dword [esp + 0x2c]
test byte [eax], 0x11
mov ecx, dword [esp + 0x10]
je 0x403109
mov eax, dword [esp + 8]
mov al, byte [eax + ebx*2 + 1]
mov byte [esp + ecx + 0x8a], al
lea eax, [esp + ecx + 0xa7]
not eax
mov dword [esp + 0x3c], eax
mov ecx, 5
mov edx, str.EFGHJError_reading_file_
mov dword [esp + 0xc], 0
mov ebx, str.EFGHJError_reading_file_
jmp 0x403141
mov ah, byte [edi + esi + 0x2b]
mov byte [esp + 0x18], ah
mov dword [esp + 0xc], eax
inc ebx
inc edx
dec ecx
je 0x403190
cmp ebx, str.EFGHJError_reading_file_
jb 0x4039b0
movzx eax, byte [edx]
mov ah, al
add ah, 0xbf
movzx edi, ah
cmp dword [esp + 0x20], edi
jb 0x4039b0
mov esi, dword [esp + 0x10]
lea esi, [esp + esi + 0x7c]
test byte [edi + esi + 0x11], 1
je 0x40313c
test ebx, ebx
je 0x4039b0
cmp dword [esp + 0x3c], edi
jae 0x403130
jmp 0x4039b0
cmp byte [esp + 0xc], 0
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 8]
je 0x403240
mov al, byte [esp + ebx + 0xc4]
cmp byte [esp + 0xc], al
jne 0x4031cd
mov ecx, dword [esp + 0x10]
mov ah, byte [esp + 0x18]
cmp ah, byte [esp + ecx + 0xc6]
mov ecx, dword [esp + 8]
je 0x403544
mov ebx, dword [esp + 0xc]
cmp bl, 0x4a
jne 0x403270
mov esi, dword [esp + 0x7c]
lea eax, [edx + 1]
movzx ecx, ax
call 0x4041c0
mov ecx, dword [esp + 8]
mov edx, dword [esp + 4]
test eax, eax
je 0x403544
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0x21
add eax, 6
test al, 1
jne 0x403a25
mov cl, byte [esp + 0x18]
mov byte [eax], cl
jmp 0x403540
cmp byte [esp + ebx + 0xc4], 0
je 0x403568
cmp byte [esp + ebx + 0x8a], 0xfd
jbe 0x4031a7
jmp 0x403568
cmp al, 0x4a
jne 0x4032bd
mov esi, dword [esp + 0x7c]
lea eax, [edx + 1]
movzx ecx, ax
call 0x4041c0
mov ecx, dword [esp + 8]
mov edx, dword [esp + 4]
test eax, eax
je 0x403544
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0x21
jmp 0x4033fe
test bl, bl
mov edi, dword [esp + 0x10]
je 0x4033ba
cmp byte [esp + edi + 0xc5], bl
jne 0x4032e3
mov al, byte [esp + 0x18]
cmp al, byte [esp + edi + 0xc6]
je 0x4034ba
mov eax, ebx
add al, 0xbb
cmp al, 2
jae 0x403411
movzx eax, byte [esp + 0x18]
lea ecx, [eax + eax*2]
movzx eax, cx
shr eax, 1
test ecx, 0x180
mov ecx, 0x3f
cmovne eax, ecx
mov ecx, eax
neg cl
cmp bl, 0x45
movzx ebx, cl
cmovne ebx, eax
mov esi, dword [esp + 0x7c]
lea eax, [edx + 1]
movzx edi, ax
mov ecx, edi
call 0x4041c0
test eax, eax
je 0x403363
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, dword [esp + 4]
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0x12
add eax, 6
test al, 1
jne 0x403a25
and bl, 0x7f
mov byte [eax], bl
mov esi, dword [esp + 0x7c]
mov ecx, edi
call 0x4041c0
test eax, eax
mov edx, dword [esp + 4]
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
je 0x4034ba
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0x13
add eax, 6
test al, 1
jne 0x403a25
mov byte [eax], 0x7f
jmp 0x4034ba
mov esi, dword [esp + 0x7c]
lea eax, [edx + 1]
movzx ecx, ax
call 0x4041c0
mov edx, dword [esp + 4]
test eax, eax
mov ecx, dword [esp + 8]
je 0x403544
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 1
add eax, 6
test al, 1
jne 0x403a25
mov byte [eax], 0
jmp 0x403540
cmp bl, 0x48
jne 0x4034ba
mov esi, dword [esp + 0x7c]
lea eax, [edx + 1]
movzx ecx, ax
mov dword [esp + 0x20], ecx
call 0x4041c0
test eax, eax
je 0x40346c
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, dword [esp + 4]
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0x12
add eax, 6
test al, 1
jne 0x403a25
mov cl, byte [esp + 0x18]
and cl, 0xf
mov byte [eax], cl
mov esi, dword [esp + 0x7c]
mov ecx, dword [esp + 0x20]
call 0x4041c0
test eax, eax
mov edx, dword [esp + 4]
je 0x4034ba
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0x13
add eax, 6
test al, 1
jne 0x403a25
mov cl, byte [esp + 0x18]
shr cl, 4
mov byte [eax], cl
lea eax, [esp + edi + 0xc5]
mov byte [eax], bl
mov al, byte [esp + 0x18]
shl al, 3
and al, 0x78
cmp bl, 0x48
movzx ebx, al
mov eax, 0x7f
cmovne ebx, eax
cmp bl, 9
mov eax, 8
cmovb ebx, eax
mov esi, dword [esp + 0x7c]
lea eax, [edx + 1]
movzx ecx, ax
call 0x4041c0
mov edx, dword [esp + 4]
test eax, eax
mov ecx, dword [esp + 8]
je 0x403544
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 1
add eax, 6
test al, 1
jne 0x403a25
mov byte [eax], bl
nop word cs:[eax + eax]
nop dword [eax]
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
lea eax, [esp + ebx + 0xc4]
mov esi, edx
mov edx, dword [esp + 0xc]
test dl, dl
mov byte [eax], dl
mov edx, esi
je 0x403568
mov al, byte [esp + 0x18]
mov byte [esp + ebx + 0xc6], al
mov eax, dword [esp + 0x2c]
test byte [eax], 0x11
je 0x402e80
mov eax, dword [esp + 0x30]
movzx ecx, byte [ecx + eax*2 + 1]
cmp ecx, 0xfd
mov byte [esp + ebx + 0x8a], cl
mov esi, dword [esp + 0x1c]
mov al, byte [esi + 5]
ja 0x403690
test al, 2
jne 0x403695
mov al, 0x40
mov dword [esp + 0x20], ecx
cmp cl, 0x77
ja 0x403822
mov cl, byte [esi]
movzx edx, word [0x418062]
test dx, dx
je 0x403635
dec cl
movzx ecx, cl
cmp dx, cx
jbe 0x40381e
mov edx, dword [0x418124]
imul edi, ecx, 0x130
lea esi, [edi + edx]
cmp esi, edx
jb 0x4039b0
test edx, edx
je 0x4039b0
test esi, esi
je 0x4039b0
test dl, 1
jne 0x403a25
mov ecx, dword [esp + 0x20]
cmp cl, 0x78
jae 0x403ffe
lea edi, [edx + edi + 0x40]
mov dword [esp + 0xc], edi
lea edi, [ecx + ecx]
add dword [esp + 0xc], edi
jb 0x4039b0
add dl, 0x40
test dl, 1
jne 0x403a25
mov ecx, dword [esp + 0x20]
mov cl, byte [esi + ecx*2 + 0x41]
mov esi, dword [esp + 0x1c]
dec cl
movzx ecx, cl
cmp word [0x418064], cx
mov edx, dword [esp + 4]
jbe 0x403822
mov eax, dword [0x418128]
lea ecx, [ecx + ecx*4]
shl ecx, 4
lea edx, [ecx + eax]
cmp edx, eax
jb 0x4039b0
test eax, eax
je 0x4039b0
test edx, edx
je 0x4039b0
test al, 3
jne 0x403a25
mov al, byte [eax + ecx + 0x13]
mov edx, dword [esp + 4]
mov esi, dword [esp + 0x1c]
jmp 0x403822
and al, 0xfe
mov byte [esi + 5], al
mov al, byte [esi + 5]
test al, 1
je 0x4036aa
cmp byte [esp + ebx + 0xc2], cl
je 0x4036aa
and al, 0xfe
mov byte [esi + 5], al
test byte [esi + 5], 1
jne 0x402e80
mov bl, byte [esp + ebx + 0xc2]
cmp bl, 0xfd
ja 0x40370f
mov esi, dword [esp + 0x7c]
lea eax, [edx + 1]
mov edi, ecx
movzx ecx, ax
call 0x4041c0
mov ecx, edi
mov edx, dword [esp + 4]
test eax, eax
je 0x40370f
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0x90
mov byte [eax + 4], cl
mov byte [eax + 5], bl
add eax, 6
test al, 1
jne 0x403a25
mov byte [eax], 0
mov ecx, edi
mov eax, dword [esp + 0x10]
lea edi, [esp + eax + 0xc2]
cmp cl, 0xfd
mov byte [edi], cl
ja 0x402e80
movzx eax, byte [esp + eax + 0x8b]
cvtsi2sd xmm0, eax
mulsd xmm0, qword [0x416028]
sub esp, 8
movsd qword [esp], xmm0
call fcn.00405160
add esp, 8
fstp qword [esp + 0x60]
movsd xmm0, qword [esp + 0x60]
mulsd xmm0, qword [0x416030]
xorpd xmm1, xmm1
minsd xmm1, xmm0
divsd xmm1, qword [0x416038]
sub esp, 0x10
movsd qword [esp + 8], xmm1
mov dword [esp + 4], 0x40240000
mov dword [esp], 0
call fcn.004052a0
add esp, 0x10
fstp qword [esp + 0x58]
movsd xmm1, qword [esp + 0x58]
mulsd xmm1, qword [0x416040]
addsd xmm1, qword [0x416008]
ucomisd xmm1, qword [0x416010]
jbe 0x403ffa
movsd xmm0, qword [0x416048]
ucomisd xmm0, xmm1
jbe 0x403ffa
movsd qword [esp + 0x10], xmm1
mov esi, dword [esp + 0x7c]
mov bl, byte [edi]
mov edi, dword [esp + 4]
lea eax, [edi + 1]
movzx ecx, ax
call 0x4041c0
mov edx, edi
test eax, eax
je 0x402e80
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0x90
mov byte [eax + 4], cl
mov byte [eax + 5], bl
add eax, 6
test al, 1
je 0x402e71
jmp 0x403a25
mov edx, dword [esp + 4]
cmp byte [esp + ebx + 0x8b], al
mov ecx, dword [esp + 0x20]
je 0x403695
lea ecx, [esp + ebx + 0x8b]
mov byte [ecx], al
mov ecx, dword [esp + 0x20]
jmp 0x403695
cmp al, 0x72
ja 0x403862
shl al, 2
add al, 0x5c
movzx eax, al
movzx edx, byte [esp + 4]
lea ecx, [esp + 0x7c]
push eax
push 0x45
jmp 0x4030af
cmp al, 0x7c
ja 0x40387f
shl al, 2
add al, 0x34
movzx eax, al
movzx edx, byte [esp + 4]
lea ecx, [esp + 0x7c]
push eax
push 0x46
jmp 0x4030af
test al, al
jns 0x4030b7
cmp al, 0xc0
ja 0x403916
mov ecx, eax
xor cl, 0x80
mov edx, dword [esp + 0x10]
cmp byte [esp + edx + 0x89], cl
je 0x4030b7
mov edx, dword [esp + 0x10]
lea edx, [esp + edx + 0x89]
mov byte [edx], cl
add al, al
cmp cl, 0x40
movzx ebx, al
mov eax, 0x7f
cmovae ebx, eax
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 4]
inc eax
movzx ecx, ax
call 0x4041c0
mov edx, dword [esp + 4]
test eax, eax
je 0x4030b7
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, edx
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0xa
add eax, 6
test al, 1
jne 0x403a25
mov byte [eax], bl
jmp 0x4030b7
cmp al, 0xca
ja 0x403949
add al, 0x3f
cmp al, 9
ja 0x403ffe
movzx eax, al
cmp eax, dword [esp + 0x44]
ja 0x4039b0
movzx eax, byte [eax + 0x4160f8]
movzx edx, byte [esp + 4]
lea ecx, [esp + 0x7c]
push eax
push 0x47
jmp 0x4030af
cmp al, 0xd4
ja 0x4030b7
add al, 0x35
movzx eax, al
movzx edx, byte [esp + 4]
lea ecx, [esp + 0x7c]
push eax
push 0x48
jmp 0x4030af
movzx eax, byte [esp + 0x86]
movzx ecx, word [0x41802c]
imul ecx, eax
add dword [esp + 0x7c], ecx
movzx eax, word [esp + 0x82]
inc eax
mov word [esp + 0x82], ax
mov ecx, dword [0x41812c]
lea edx, [ebx + ecx]
cmp edx, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test edx, edx
jne 0x402e30
ud1
inc eax
adc esi, dword [ecx]
div byte [ecx]
fucomi st(3)
sbb ah, byte [esi + 0xf]
pop ds
inc esp
add byte [eax], al
xor esi, esi
xor ebx, ebx
jmp 0x4039d4
mov byte [eax], 0
mov byte [esp + esi + 0x8a], 0xff
inc ebx
add esi, 0x40
cmp ebx, 0x40
je 0x403a29
cmp esi, dword [esp + 0x34]
ja 0x4039b0
movzx eax, byte [esp + esi + 0x8a]
cmp al, 0xfd
ja 0x4039cb
mov byte [esp + 0x10], al
mov edi, dword [esp + 0x7c]
lea eax, [ebx + 1]
movzx ecx, ax
call 0x4041c0
test eax, eax
je 0x4039c3
test al, 3
jne 0x403a25
mov dword [eax], edi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov ecx, ebx
and cl, 0xf
or cl, 0x90
mov byte [eax + 4], cl
movzx ecx, byte [esp + 0x10]
mov byte [eax + 5], cl
add eax, 6
test al, 1
je 0x4039c0
ud1
inc eax
push ss
mov esi, dword [esp + 0x7c]
mov ecx, 0x41
call 0x4041c0
test eax, eax
je 0x403a59
test al, 3
jne 0x403a25
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x403a25
mov word [eax + 4], 0
add eax, 6
test al, 1
jne 0x403a25
mov byte [eax], 0
mov dword [0x41803c], 0x20000
push 0x20000
call sub.msvcrt.dll_malloc
add esp, 4
mov dword [0x418038], eax
mov dword [esp + 0x7c], 0
test eax, eax
je 0x4039b0
mov dword [eax], 0x6468544d
mov dword [esp + 0x7c], 4
mov dword [eax + 4], 0x6000000
mov edx, dword [esp + 0x7c]
lea eax, [edx + 4]
mov dword [esp + 0x7c], eax
mov ecx, dword [0x418038]
lea edx, [edx + ecx + 4]
cmp edx, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test edx, edx
je 0x4039b0
lea edx, [ecx + eax]
mov byte [ecx + eax], 0
cmp edx, 0xffffffff
je 0x4039b0
mov byte [edx + 1], 1
mov edx, dword [esp + 0x7c]
lea eax, [edx + 2]
mov dword [esp + 0x7c], eax
mov ecx, dword [0x418038]
lea edx, [edx + ecx + 2]
cmp edx, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test edx, edx
je 0x4039b0
lea edx, [ecx + eax]
movzx ebx, word [0x418132]
mov byte [ecx + eax], bh
cmp edx, 0xffffffff
je 0x4039b0
mov byte [edx + 1], bl
mov edx, dword [esp + 0x7c]
lea eax, [edx + 2]
mov dword [esp + 0x7c], eax
mov ecx, dword [0x418038]
lea edx, [edx + ecx + 2]
cmp edx, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test edx, edx
je 0x4039b0
lea edx, [ecx + eax]
movzx ebx, word [0x41813a]
mov byte [ecx + eax], bh
cmp edx, 0xffffffff
je 0x4039b0
mov byte [edx + 1], bl
add dword [esp + 0x7c], 2
cmp word [0x418132], 0
je 0x403fd4
mov dword [esp + 0x2c], 0
nop word cs:[eax + eax]
nop dword [eax]
mov ecx, dword [0x418038]
mov edx, dword [esp + 0x7c]
lea eax, [edx + ecx]
cmp eax, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test eax, eax
je 0x4039b0
mov byte [ecx + edx], 0x4d
cmp eax, 0xffffffff
je 0x4039b0
mov byte [eax + 1], 0x54
cmp eax, 0xfffffffd
ja 0x4039b0
mov byte [eax + 2], 0x72
cmp eax, 0xfffffffc
ja 0x4039b0
mov byte [eax + 3], 0x6b
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x1c], eax
add eax, 8
mov dword [esp + 0x38], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], 0
mov eax, dword [esp + 0x2c]
lea eax, [eax*4]
lea eax, [eax + eax*2]
mov ecx, dword [0x418134]
mov dword [esp + 0x30], eax
add eax, ecx
cmp eax, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
test eax, eax
je 0x4039b0
mov dword [esp + 0x10], 0
xor eax, eax
nop word [eax + eax]
test cl, 3
jne 0x403a25
mov edx, dword [esp + 0x2c]
lea edx, [edx + edx*2]
lea ebx, [ecx + edx*4 + 4]
test bl, 3
jne 0x403a25
mov esi, dword [esp + 0x10]
cmp esi, dword [ebx]
jae 0x403f30
lea ecx, [ecx + edx*4 + 8]
test cl, 3
jne 0x403a25
mov esi, dword [ecx]
imul edx, dword [esp + 0x10], 0x10
seto cl
test esi, esi
je 0x4039b0
add edx, esi
je 0x4039b0
cmp edx, esi
jb 0x4039b0
test cl, cl
jne 0x4039b0
mov edi, dword [esp + 0x10]
shl edi, 4
lea ebx, [esi + edi]
test bl, 3
jne 0x403a25
mov edx, dword [ebx]
sub edx, eax
add edx, dword [esp + 0x78]
mov dword [esp + 0x78], edx
lea eax, [esi + edi + 0xc]
test al, 3
jne 0x403a25
mov ecx, dword [eax]
test ecx, ecx
mov eax, dword [0x418038]
mov dword [esp + 0x20], eax
je 0x403ec0
lea eax, [esi + edi + 8]
test al, 3
jne 0x403a25
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov cl, byte [esi + edi + 5]
mov byte [esp + 0x3c], cl
movzx eax, word [eax]
mov dword [esp + 0xc], eax
xor eax, eax
mov edi, edx
mov ecx, edx
nop word [eax + eax]
mov esi, eax
shr ecx, 7
inc eax
cmp edi, 0x7f
mov edi, ecx
ja 0x403d10
mov edi, dword [esp + 0x7c]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x18], edi
add edi, ecx
cmp edi, ecx
jb 0x4039b0
cmp dword [esp + 0x20], 0
je 0x4039b0
test edi, edi
je 0x4039b0
mov ebx, edi
not ebx
nop word [eax + eax]
cmp esi, ebx
ja 0x4039b0
mov ecx, edx
or cl, 0x80
mov byte [edi + esi], cl
mov ecx, edx
shr ecx, 7
dec esi
cmp edx, 0x7f
mov edx, ecx
ja 0x403d50
lea ecx, [eax - 1]
cmp ecx, ebx
ja 0x4039b0
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
lea ecx, [edx + ecx - 1]
mov dl, byte [ecx + eax]
and dl, 0x7f
mov byte [ecx + eax], dl
mov ecx, dword [esp + 0x7c]
lea edx, [ecx + eax]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x78], 0
mov esi, dword [0x418038]
add ecx, esi
lea edx, [ecx + eax]
cmp edx, esi
jb 0x4039b0
test esi, esi
je 0x4039b0
test edx, edx
je 0x4039b0
mov byte [eax + ecx], 0xff
mov eax, dword [0x418038]
mov ecx, dword [esp + 0x7c]
lea edx, [ecx + eax + 1]
cmp edx, eax
jb 0x4039b0
test eax, eax
je 0x4039b0
test edx, edx
je 0x4039b0
inc ecx
mov dl, byte [esp + 0x3c]
mov byte [eax + ecx], dl
mov ecx, dword [esp + 0x7c]
lea esi, [ecx + 2]
mov dword [esp + 0x7c], esi
xor edx, edx
mov ebx, dword [esp + 0xc]
mov edi, ebx
nop word [eax + eax]
mov eax, edx
shr edi, 7
inc edx
cmp ebx, 0x7f
mov ebx, edi
ja 0x403e10
mov edi, dword [esp + 0x20]
add esi, edi
jb 0x4039b0
not esi
lea edi, [edi + ecx + 1]
mov ebx, dword [esp + 0xc]
nop word cs:[eax + eax]
nop dword [eax]
cmp eax, esi
ja 0x4039b0
mov ecx, ebx
or cl, 0x80
mov byte [edi + eax + 1], cl
mov ecx, ebx
shr ecx, 7
dec eax
cmp ebx, 0x7f
mov ebx, ecx
ja 0x403e40
lea eax, [edx - 1]
cmp eax, esi
ja 0x4039b0
mov al, byte [edi + edx]
and al, 0x7f
mov byte [edi + edx], al
mov ecx, dword [esp + 0x7c]
lea eax, [ecx + edx]
mov dword [esp + 0x7c], eax
mov esi, dword [0x418038]
add ecx, esi
lea eax, [ecx + edx]
cmp eax, esi
jb 0x4039b0
test esi, esi
je 0x4039b0
neg ecx
cmp ecx, edx
je 0x4039b0
mov esi, dword [esp + 0xc]
push esi
push dword [esp + 8]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add dword [esp + 0x7c], esi
mov ebx, dword [esp + 8]
jmp 0x403eff
lea eax, [esi + edi + 4]
test al, 3
jne 0x403a25
lea ecx, [esi + edi + 6]
test cl, 1
jne 0x403a25
movzx eax, byte [eax]
movzx esi, byte [esi + edi + 5]
movzx edi, byte [ecx]
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x7c]
push edi
push esi
push eax
lea eax, [esp + 0x84]
push eax
call 0x404010
add esp, 0x10
mov ecx, dword [0x418134]
mov eax, dword [esp + 0x30]
lea edx, [eax + ecx]
cmp edx, ecx
jb 0x4039b0
test ecx, ecx
je 0x4039b0
mov eax, dword [ebx]
inc dword [esp + 0x10]
test edx, edx
jne 0x403c40
jmp 0x4039b0
mov ecx, dword [0x418038]
lea edx, [esp + 0x7c]
push 0
push 0x2f
push 0xff
lea eax, [esp + 0x84]
push eax
call 0x404010
add esp, 0x10
mov edx, dword [0x418038]
mov eax, dword [esp + 0x1c]
lea eax, [eax + edx + 4]
cmp eax, edx
jb 0x4039b0
test edx, edx
je 0x4039b0
test eax, eax
je 0x4039b0
mov esi, dword [esp + 0x1c]
add esi, 4
lea eax, [edx + esi]
mov ecx, dword [esp + 0x7c]
sub ecx, dword [esp + 0x38]
mov ebx, ecx
shr ebx, 0x18
mov byte [edx + esi], bl
cmp eax, 0xffffffff
je 0x4039b0
mov edx, ecx
shr edx, 0x10
mov byte [eax + 1], dl
cmp eax, 0xfffffffd
ja 0x4039b0
mov byte [eax + 2], ch
cmp eax, 0xfffffffc
ja 0x4039b0
mov byte [eax + 3], cl
mov ecx, dword [esp + 0x2c]
inc ecx
mov eax, ecx
mov dword [esp + 0x2c], ecx
cmp cx, word [0x418132]
jb 0x403b90
mov eax, dword [esp + 0x7c]
mov dword [0x41803c], eax
mov eax, dword [esp + 0x1088]
xor eax, ebp
mov ecx, dword [0x416128]
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x404006
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
ud1
inc eax
add eax, 0x1240b90f
ud1
inc eax
adc cl, byte [edi]
mov ecx, 0xe5e80c40
sbb eax, dword [eax]
add byte [edi], cl
pop ds
inc esp
add byte [eax], al
ud1
inc eax
or al, 0xe8
in eax, 0x1b
add byte [eax], al
call fcn.00405bf0
nop dword [eax + eax]
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
cmp byte [ebp + 0xc], 0
jns 0x4041aa
mov eax, dword [ebp + 8]
test al, 3
jne 0x4041b6
test eax, eax
je 0x4041b6
mov ebx, dword [eax]
mov eax, 0xffffffff
mov edi, ebx
mov esi, ebx
nop
shr esi, 7
inc eax
cmp edi, 0x7f
mov edi, esi
ja 0x404040
test dl, 3
jne 0x4041b6
test edx, edx
je 0x4041b6
mov dword [ebp - 0x10], edx
mov edx, dword [edx]
add edx, ecx
cmp edx, ecx
jb 0x4041b2
test ecx, ecx
je 0x4041b2
test edx, edx
je 0x4041b2
mov edi, edx
not edi
mov esi, eax
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp esi, edi
ja 0x4041b2
mov ecx, ebx
or cl, 0x80
mov byte [edx + esi], cl
mov ecx, ebx
shr ecx, 7
dec esi
cmp ebx, 0x7f
mov ebx, ecx
ja 0x404090
cmp eax, edi
ja 0x4041b2
and byte [edx + eax], 0x7f
mov edx, dword [ebp - 0x10]
mov ecx, dword [edx]
lea eax, [ecx + eax + 1]
mov dword [edx], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0
mov bl, byte [ebp + 0xc]
mov eax, ebx
and al, 0xf0
movzx eax, al
add eax, 0xffffff80
shr eax, 4
cmp eax, 7
ja 0x4041aa
mov ecx, 0x4f
bt ecx, eax
jae 0x404162
mov eax, dword [0x418038]
mov ecx, dword [edx]
lea esi, [ecx + eax]
cmp esi, eax
jb 0x4041b2
test eax, eax
je 0x4041b2
test esi, esi
je 0x4041b2
mov byte [eax + ecx], bl
mov eax, dword [0x418038]
mov ecx, dword [edx]
lea esi, [ecx + eax + 1]
cmp esi, eax
jb 0x4041b2
test eax, eax
je 0x4041b2
test esi, esi
je 0x4041b2
inc ecx
mov bl, byte [ebp + 0x10]
mov byte [eax + ecx], bl
mov eax, dword [0x418038]
mov ecx, dword [edx]
lea esi, [ecx + eax + 2]
cmp esi, eax
jb 0x4041b2
test eax, eax
je 0x4041b2
test esi, esi
je 0x4041b2
add ecx, 2
mov bl, byte [ebp + 0x14]
mov byte [eax + ecx], bl
mov eax, 3
jmp 0x4041a8
mov ecx, 0x30
bt ecx, eax
jae 0x4040f0
mov eax, dword [0x418038]
mov ecx, dword [edx]
lea esi, [ecx + eax]
cmp esi, eax
jb 0x4041b2
test eax, eax
je 0x4041b2
test esi, esi
je 0x4041b2
mov byte [eax + ecx], bl
mov eax, dword [0x418038]
mov ecx, dword [edx]
lea esi, [ecx + eax + 1]
cmp esi, eax
jb 0x4041b2
test eax, eax
je 0x4041b2
test esi, esi
je 0x4041b2
inc ecx
mov bl, byte [ebp + 0x10]
mov byte [eax + ecx], bl
mov eax, 2
add dword [edx], eax
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret
ud1
inc eax
adc ecx, dword [edi]
mov ecx, 0xf661640
pop ds
inc esp
add byte [eax], al
ud1
inc eax
push ss
nop word [eax + eax]
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
xor eax, eax
cmp word [0x418132], cx
jbe 0x40427b
mov esi, dword [0x418134]
lea edi, [ecx + ecx*2]
lea eax, [esi + edi*4]
cmp eax, esi
jb 0x404287
test esi, esi
je 0x404287
test eax, eax
je 0x404287
test al, 3
jne 0x404283
lea ebx, [esi + edi*4 + 4]
test bl, 3
jne 0x404283
mov ecx, dword [eax]
cmp dword [ebx], ecx
jb 0x404237
add ecx, 0x10000
mov dword [eax], ecx
lea eax, [esi + edi*4 + 8]
test al, 3
jne 0x404283
shl ecx, 4
push ecx
push dword [eax]
mov dword [ebp - 0x10], eax
call sub.msvcrt.dll_realloc
add esp, 8
mov ecx, dword [ebp - 0x10]
mov dword [ecx], eax
lea eax, [esi + edi*4 + 8]
test al, 3
jne 0x404283
mov eax, dword [eax]
mov ecx, dword [ebx]
imul esi, ecx, 0x10
seto dl
test eax, eax
je 0x404287
add esi, eax
je 0x404287
cmp esi, eax
jb 0x404287
test dl, dl
jne 0x404287
shl ecx, 4
add eax, ecx
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
inc dword [ebx]
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret
ud1
inc eax
push ss
ud1
inc eax
adc ecx, dword [edi]
pop ds
inc esp
add byte [eax], al
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
test cl, 3
jne 0x4045ca
test ecx, ecx
je 0x4045ca
mov dword [esp + 0x24], edx
cmp dl, 0x41
jae 0x4045ce
movzx eax, byte [esp + 0x24]
mov dword [esp + 0x18], ecx
lea edx, [ecx + 0xb]
mov dword [esp + 0x2c], eax
shl eax, 6
add edx, eax
jb 0x4045c6
mov cl, byte [ebp + 0xc]
mov dh, byte [ebp + 8]
mov dl, dh
add dl, 0xbf
cmp dh, 0x46
movzx esi, dl
mov ebx, 4
mov dword [esp + 0x28], esi
cmovne ebx, esi
cmp dl, 0x19
ja 0x4043b3
mov dl, dh
add dl, 0xbc
cmp dl, 9
movzx edi, bl
jb 0x404321
mov dl, dh
add dl, 0xb2
cmp dl, 5
jb 0x404321
mov dl, dh
or dl, 2
cmp dl, 0x57
je 0x404321
cmp dh, 0x59
jne 0x404349
test cl, cl
jne 0x404349
cmp bl, 0x19
mov ecx, dword [esp + 0x18]
ja 0x4045ce
lea edx, [ecx + eax + 0x2b]
add edx, edi
jb 0x4045c6
mov ecx, dword [esp + 0x18]
lea edx, [ecx + eax]
mov cl, byte [edi + edx + 0x2b]
mov edx, dword [esp + 0x18]
lea esi, [edx + eax + 0x11]
add esi, dword [esp + 0x28]
jb 0x4045c6
mov byte [esp + 0x17], cl
mov dl, byte [esi]
mov dh, dl
or dh, 1
mov byte [esi], dh
cmp bl, 0x19
mov ecx, dword [esp + 0x18]
ja 0x4045ce
lea ecx, [ecx + eax + 0x2b]
add edi, ecx
mov dh, byte [esp + 0x17]
jb 0x4045c6
cmp byte [edi], dh
je 0x404396
test esi, esi
je 0x4045c6
or dl, 0x81
mov byte [esi], dl
test edi, edi
je 0x4045c6
mov esi, ecx
mov byte [edi], dh
mov ecx, dword [esp + 0x28]
cmp bl, cl
jne 0x4043bd
mov dh, byte [ebp + 8]
mov ecx, dword [esp + 0x18]
jmp 0x4043d9
mov byte [esp + 0x17], cl
mov ecx, dword [esp + 0x18]
jmp 0x4043d9
add esi, ecx
jb 0x4045c6
mov bl, dh
mov ecx, dword [esp + 0x18]
lea edx, [ecx + eax]
mov esi, dword [esp + 0x28]
mov byte [esi + edx + 0x2b], bl
mov dh, byte [ebp + 8]
movsx edx, dh
add edx, 0xffffffbf
cmp edx, 0x17
ja case.0x4043e8.68
jmp dword [edx*4 + 0x416088]
cmp byte [esp + 0x17], 0
je case.0x4043e8.68
add ecx, 0xa
test cl, 1
jne 0x4045ca
mov al, byte [esp + 0x17]
mov byte [ecx], al
jmp case.0x4043e8.68
lea eax, [ecx + 4]
test al, 3
jne 0x4045ca
movzx edx, byte [esp + 0x17]
cmp word [eax], dx
ja case.0x4043e8.68
movzx eax, dx
dec eax
mov word [ecx + 4], ax
jmp 0x404448
lea eax, [ecx + 8]
test al, 3
jne 0x4045ca
movzx eax, byte [esp + 0x17]
mov word [ecx + 8], ax
add ecx, 6
test cl, 1
jne 0x4045ca
mov word [ecx], 0xfffe
jmp case.0x4043e8.68
or byte [ecx + eax + 0x10], 1
jmp case.0x4043e8.68
movzx edx, byte [esp + 0x17]
add edx, 2
shr edx, 2
movzx esi, byte [ecx + eax + 0xd]
cmp edx, esi
je case.0x4043e8.68
lea eax, [ecx + eax + 0xd]
mov byte [eax], dl
mov esi, dword [ecx]
mov ecx, dword [esp + 0x2c]
inc ecx
call 0x4041c0
test eax, eax
je case.0x4043e8.68
test al, 3
jne 0x4045ca
mov dword [eax], esi
lea ecx, [eax + 4]
test cl, 3
jne 0x4045ca
mov ecx, dword [esp + 0x24]
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 0xa
add eax, 6
test al, 1
jne 0x4045ca
mov cl, byte [esp + 0x17]
shr cl, 1
mov byte [eax], cl
jmp case.0x4043e8.68
mov dl, byte [esp + 0x17]
cmp dl, byte [ecx + eax + 0xc]
je case.0x4043e8.68
lea eax, [ecx + eax + 0xc]
mov cl, byte [esp + 0x17]
mov byte [eax], cl
movzx eax, cl
cvtsi2sd xmm0, eax
mulsd xmm0, qword [0x416050]
movsd qword [esp], xmm0
call fcn.00405160
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
mulsd xmm0, qword [0x416058]
xorpd xmm1, xmm1
minsd xmm1, xmm0
divsd xmm1, qword [0x416060]
movsd qword [esp + 8], xmm1
mov dword [esp + 4], 0x40240000
mov dword [esp], 0
call fcn.004052a0
fstp qword [esp + 0x30]
movsd xmm1, qword [esp + 0x30]
mulsd xmm1, qword [0x416068]
addsd xmm1, qword [0x416070]
ucomisd xmm1, qword [0x416078]
jbe 0x4045d2
movsd xmm0, qword [0x416080]
ucomisd xmm0, xmm1
jbe 0x4045d2
movsd qword [esp + 0x18], xmm1
mov ecx, dword [esp + 0x2c]
inc ecx
call 0x4041c0
test eax, eax
je case.0x4043e8.68
test al, 3
jne 0x4045ca
mov dword [eax], 0
lea ecx, [eax + 4]
test cl, 3
jne 0x4045ca
mov ecx, dword [esp + 0x24]
and cl, 0xf
or cl, 0xb0
mov byte [eax + 4], cl
mov byte [eax + 5], 7
add eax, 6
test al, 1
jne 0x4045ca
cvttsd2si ecx, qword [esp + 0x18]
mov byte [eax], cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
ud1
inc eax
adc ecx, dword [edi]
mov ecx, 0xb90f1640
ud1
inc eax
push ss
ud1
inc eax
adc cl, byte [edi]
mov ecx, 0xcccc0540
int3
ud1
inc eax
add eax, 0xcccccccc
int3